{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6cf56fcb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n"
     ]
    }
   ],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8ac6d8f8",
   "metadata": {},
   "outputs": [],
   "source": [
    "import io\n",
    "import time\n",
    "import torch\n",
    "import torchaudio"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ecbdddfd",
   "metadata": {},
   "outputs": [],
   "source": [
    "from pathlib import Path\n",
    "import json\n",
    "from fastprogress import progress_bar, master_bar\n",
    "import fastprogress\n",
    "import numpy as np\n",
    "import pylab as plt\n",
    "import pandas as pd\n",
    "import random\n",
    "import IPython\n",
    "\n",
    "import whisper\n",
    "\n",
    "from fastcore.script import *"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e1d80d3b",
   "metadata": {},
   "source": [
    "# VQ semantic token extraction evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c6e7d60b",
   "metadata": {},
   "outputs": [],
   "source": [
    "def show_chunk(data, i):\n",
    "    row = data.loc[i]\n",
    "    snd, sr = torchaudio.load('/data/librilight/'+row['fname'])\n",
    "    IPython.display.display(IPython.display.Audio(snd[0,int(row['tstart']*sr):int(row['tend']*sr)], rate=sr))\n",
    "    print(row['len'], row['txt'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8a31b3a7",
   "metadata": {},
   "outputs": [],
   "source": [
    "def test_incremental(model_name, Tmax=15):\n",
    "    whmodel = whisper.load_model(model_name)\n",
    "    for i in range(Tmax):\n",
    "        print(i, whmodel.transcribe(snd[0,:int(i*16000)])['text'])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "afae1174",
   "metadata": {},
   "source": [
    "## How Whisper works with speech cut at different lengths"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8ed876ee",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 \n",
      "1  Chapter\n",
      "2  Chapter 5 of the\n",
      "3  Chapter 5 of the things in our garden.\n",
      "4  Chapter 5 of the Things in Our Garden by Arthur Rachael.\n",
      "5  Chapter 5 of the things in our garden by Arthur Ransom.\n",
      "6  Chapter 5 of the Things in Our Garden by Arthur Ransom. This LibraVox Recordings.\n",
      "7  Chapter 5 of the Things in Our Garden by Arthur Ransom. This LibraVox recording is in the public.\n",
      "8  Chapter 5 of the Things in Our Garden by Arthur Ransom. This LibraVox recording is in the public domain.\n",
      "9  Chapter 5 of the Things in Our Garden by Arthur Ransom. This LibraVox recording is in the public domain. Chapter 5\n",
      "10  Chapter 5 of the Things in Our Garden by Arthur Ransom. This LibraVox recording is in the public domain. Chapter 5, their own garden.\n",
      "11  Chapter 5 of the Things in Our Garden by Arthur Ransom. This LibraVox recording is in the public domain. Chapter 5, Their Own Gardens.\n",
      "12  Chapter 5 of the Things in Our Garden by Arthur Ransom. This Libra-Vox recording is in the public domain. Chapter 5, Their Own Gardens.\n",
      "13  Chapter 5 of the Things in Our Garden by Arthur Ransom. This Libra-Vox recording is in the public domain. Chapter 5, their own gardens, close by the wood at the\n",
      "14  Chapter 5 of the Things in Our Garden by Arthur Ransom. This Libra box recording is in the public domain. Chapter 5, Their Own Gardens, Close by the wood at the bottom of the garden.\n"
     ]
    }
   ],
   "source": [
    "test_incremental('tiny.en')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "574af1b4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 \n",
      "1  Chapter 4\n",
      "2  Chapter 5 of the\n",
      "3  Chapter 5 of the Things in our Guard.\n",
      "4  Chapter 5 of The Things in Our Garden by Arthur Raffy\n",
      "5  Chapter 5 of The Things in Our Garden by Arthur Ransom.\n",
      "6  Chapter 5 of The Things in Our Garden by Arthur Ransom.\n",
      "7  CHAPTER V.\n",
      "8  CHAPTER V.\n",
      "9  CHAPTER V.\n",
      "10  CHAPTER V.\n",
      "11  CHAPTER V.\n",
      "12  CHAPTER V. Their Own Gardens.\n",
      "13  CHAPTER V. Their Own Gardens.\n",
      "14  CHAPTER V.\n"
     ]
    }
   ],
   "source": [
    "test_incremental('base.en')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "89be56c3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 \n",
      "1  Chapter 4.\n",
      "2  Chapter 5 of the\n",
      "3  Chapter 5 of The Things in Our Garden\n",
      "4  V. THE THINGS IN OUR GARDEN\n",
      "5  V. THE THINGS IN OUR GARDEN.\n",
      "6  CHAPTER V\n",
      "7  V. THE THINGS IN OUR GARDEN\n",
      "8  CHAPTER V\n",
      "9  CHAPTER V\n",
      "10  V. THEIR OWN GARDEN\n",
      "11  V. THEIR OWN GARDENS\n",
      "12  V. THEIR OWN GARDENS\n",
      "13  V. THEIR OWN GARDENS CLOSE BY THE WOOD\n",
      "14  V. THEIR OWN GARDENS CLOSE BY THE WOOD AT THE BOTTOM OF THE GARDEN\n"
     ]
    }
   ],
   "source": [
    "test_incremental('large-v2')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0abc0d19",
   "metadata": {},
   "source": [
    "# Tests on LibriSpeech"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "846b16a9",
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_test_ds(): return progress_bar(librispeech_data('/data/LibriSpeech/test-clean'), total=1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5cad2d62",
   "metadata": {},
   "source": [
    "## Entropy of the token stream"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "796bf8ca",
   "metadata": {},
   "outputs": [],
   "source": [
    "from whisperspeech.vq_stoks import RQBottleneckTransformer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "baeeae80",
   "metadata": {},
   "outputs": [],
   "source": [
    "import collections\n",
    "def calc_model_entropy(ds, modelfile):\n",
    "    vqmodel = RQBottleneckTransformer.load_model(local_filename=modelfile).cuda()\n",
    "    cnts = collections.Counter()\n",
    "    for snd,txt in ds:\n",
    "        stoks = vqmodel.encode_audio(snd.cuda())\n",
    "        cnts.update(stoks[0].tolist())\n",
    "    pdf = torch.tensor([cnts[i] for i in range(max(cnts)+1)])\n",
    "    pdf = pdf / pdf.sum()\n",
    "    return -torch.nansum(pdf * np.log2(pdf))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cc797f64",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:04&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "6.097853445304322"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# the original semantic token model from early 2023\n",
    "calc_model_entropy(make_test_ds(), None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "60c1b117",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:04&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "6.357563112144668"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-ce9.2.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1c5771a2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:04&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "3.0997004132066834"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-256c.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "26485936",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:04&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "5.6921860685011225"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-256c-cosine.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "312ff0c0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:04&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "2.899952018598168"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-2d-256c.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "21a34490",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:04&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "5.769594466589709"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-2d-256c-cosine.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "763c4478",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:04&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "7.741530540488036"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-2d-256c-cosine-padfix2.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0553d45b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:04&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "8.164144580014993"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-2d-512c-cosine-padfix-premlp-learnpos-5e.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7ee7d3f8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:04&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "11.37221612373814"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-2d-512c-cosine32-padfix-premlp-learnpos-5e.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "61cfde92",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:08&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "11.240560444030649"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-base.en-2d-4096c-cosine32-padfix-premlp-learnpos-5e.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "21e4e298",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:17&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_276/107266959.py:11: RuntimeWarning: divide by zero encountered in log2\n",
      "  return -torch.nansum(pdf * np.log2(pdf))\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "tensor(9.6971)"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-base.en-2d-1024c-cosine32-padfix-premlp-learnpos-5e-cleaned.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3dde077b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:06&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_276/107266959.py:11: RuntimeWarning: divide by zero encountered in log2\n",
      "  return -torch.nansum(pdf * np.log2(pdf))\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "tensor(11.4108)"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-base.en-2d-4096c-cosine32-padfix-premlp-learnpos-5e-cleaned.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ac2afbd3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:17&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_103351/107266959.py:11: RuntimeWarning: divide by zero encountered in log2\n",
      "  return -torch.nansum(pdf * np.log2(pdf))\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "tensor(9.9410)"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-base.en-2d-4096c-cosine32-padfix-premlp-preconv-learnpos-5e-cleaned.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c9c302e1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:17&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_9385/107266959.py:11: RuntimeWarning: divide by zero encountered in log2\n",
      "  return -torch.nansum(pdf * np.log2(pdf))\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "tensor(11.2880)"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-base.en-2d-4096c-cosine32-padfix-premlp-premean-learnpos-5e-cleaned.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b268ce72",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:20&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "tensor(11.4831)"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-base.en-2d-4096c-60k.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "414d66fd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:20&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "tensor(11.4831)"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vq-base.en-2d-4096c-60k.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "08f94ce6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:05&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "tensor(11.6404)"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 4096 tokens, we later found out that tokens from this model do carry speaker information\n",
    "calc_model_entropy(make_test_ds(), \"vqmodel-4e-hyptuned-32gpu.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "61ff4cba",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:05&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "tensor(8.7963)"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calc_model_entropy(make_test_ds(), \"vqmodel-256c-4e-hyptuned-32gpu.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c1b4d856",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 00:14&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "tensor(8.7499)"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# the final model\n",
    "calc_model_entropy(make_test_ds(), \"vqmodel-256c-dim64-4e-hyptuned-32gpu.model\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a765798d",
   "metadata": {},
   "source": [
    "## Word Error Rate measurements"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "250149fb",
   "metadata": {},
   "outputs": [],
   "source": [
    "from whisperspeech.wer_metrics import *"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c76fc3cc",
   "metadata": {},
   "source": [
    "### Vanilla Whisper models"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7c6e5624",
   "metadata": {},
   "outputs": [],
   "source": [
    "def test_wh_model(whmodel):\n",
    "    decoding_options=whisper.DecodingOptions(language='en')\n",
    "    stats = WERStats()\n",
    "    for snd, gt_text in progress_bar(librispeech_data('/data/LibriSpeech/test-clean'), total=1000):\n",
    "        text = whmodel.decode(whisper.log_mel_spectrogram(whisper.pad_or_trim(snd[0])).cuda(), decoding_options).text\n",
    "        diff = stats.push_sample(snd, gt_text, text)\n",
    "        last_diff = diff.alignments[0][-1]\n",
    "        stats.push(hallucination = last_diff.type == 'insert' and last_diff.hyp_end_idx - last_diff.hyp_start_idx > 3)\n",
    "    stats = stats.df().sort_values('wer')\n",
    "    print(f\"WER: {stats.wer.mean()*100:.2f}%\")\n",
    "    print(f\"WER (w/o hallucinations): {stats[~stats['hallucination']].wer.mean()*100:.2f}%\")\n",
    "    return stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3ae580ac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:05&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 6.91%\n",
      "WER (w/o hallucinations): 6.91%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>None</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said, while on her lap...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>355</th>\n",
       "      <td>2.885</td>\n",
       "      <td>None</td>\n",
       "      <td>I'M AFRAID I DON'T KNOW MUCH ABOUT THE LAND OF OZ</td>\n",
       "      <td>I'm afraid I don't know much about the land of...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>353</th>\n",
       "      <td>5.870</td>\n",
       "      <td>None</td>\n",
       "      <td>THE FIRST LOT WE TESTED ON OUR GLASS CAT WHICH...</td>\n",
       "      <td>The first lot we tested on our glass cat, whic...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>674</th>\n",
       "      <td>2.295</td>\n",
       "      <td>None</td>\n",
       "      <td>HE ONLY SHOOK HIS HEAD</td>\n",
       "      <td>He only shook his head.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>675</th>\n",
       "      <td>11.545</td>\n",
       "      <td>None</td>\n",
       "      <td>WELL BUT NOW SAID THE PRINCESS AND SHE FILLED ...</td>\n",
       "      <td>Well, but now said the princess, and she fille...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>524</th>\n",
       "      <td>3.195</td>\n",
       "      <td>None</td>\n",
       "      <td>BROTHER MAC ARDLE BROTHER KEOGH</td>\n",
       "      <td>Brother Maccardo, Brother Keoff.</td>\n",
       "      <td>0.600000</td>\n",
       "      <td>0.600000</td>\n",
       "      <td>0.800000</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>1.805</td>\n",
       "      <td>None</td>\n",
       "      <td>HANS STIRS NOT</td>\n",
       "      <td>Hans Stairz-Nied.</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.888889</td>\n",
       "      <td>0.111111</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>820</th>\n",
       "      <td>2.155</td>\n",
       "      <td>None</td>\n",
       "      <td>THE FORMER BOOLOOROO GROANED</td>\n",
       "      <td>The former Billie Rook-Round</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>0.600000</td>\n",
       "      <td>0.800000</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>918</th>\n",
       "      <td>3.000</td>\n",
       "      <td>None</td>\n",
       "      <td>THAT IS TRUE BADAUDERIE</td>\n",
       "      <td>That is true bad dealt gree.</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.625000</td>\n",
       "      <td>0.375000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cause A was my man's servant.</td>\n",
       "      <td>1.250000</td>\n",
       "      <td>0.714286</td>\n",
       "      <td>0.857143</td>\n",
       "      <td>0.142857</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "0     8.230  None  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "355   2.885  None  I'M AFRAID I DON'T KNOW MUCH ABOUT THE LAND OF OZ   \n",
       "353   5.870  None  THE FIRST LOT WE TESTED ON OUR GLASS CAT WHICH...   \n",
       "674   2.295  None                             HE ONLY SHOOK HIS HEAD   \n",
       "675  11.545  None  WELL BUT NOW SAID THE PRINCESS AND SHE FILLED ...   \n",
       "..      ...   ...                                                ...   \n",
       "524   3.195  None                    BROTHER MAC ARDLE BROTHER KEOGH   \n",
       "592   1.805  None                                     HANS STIRS NOT   \n",
       "820   2.155  None                       THE FORMER BOOLOOROO GROANED   \n",
       "918   3.000  None                            THAT IS TRUE BADAUDERIE   \n",
       "371   2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "0    And often has my mother said, while on her lap...  0.000000  0.000000  \\\n",
       "355  I'm afraid I don't know much about the land of...  0.000000  0.000000   \n",
       "353  The first lot we tested on our glass cat, whic...  0.000000  0.000000   \n",
       "674                            He only shook his head.  0.000000  0.000000   \n",
       "675  Well, but now said the princess, and she fille...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "524                   Brother Maccardo, Brother Keoff.  0.600000  0.600000   \n",
       "592                                  Hans Stairz-Nied.  0.666667  0.666667   \n",
       "820                       The former Billie Rook-Round  0.750000  0.600000   \n",
       "918                       That is true bad dealt gree.  0.750000  0.500000   \n",
       "371                      Cause A was my man's servant.  1.250000  0.714286   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "0    0.000000  1.000000          False  \n",
       "355  0.000000  1.000000          False  \n",
       "353  0.000000  1.000000          False  \n",
       "674  0.000000  1.000000          False  \n",
       "675  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "524  0.800000  0.200000          False  \n",
       "592  0.888889  0.111111          False  \n",
       "820  0.800000  0.200000          False  \n",
       "918  0.625000  0.375000          False  \n",
       "371  0.857143  0.142857          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_wh_model(whisper.load_model('tiny.en'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "65b5282a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:41&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 5.08%\n",
      "WER (w/o hallucinations): 5.08%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said while on her lap ...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>403</th>\n",
       "      <td>5.370</td>\n",
       "      <td>DEPARTING FROM FIVE HUNDRED THOUSAND THROATS T...</td>\n",
       "      <td>Departing from 500,000 throats, three cheers b...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>404</th>\n",
       "      <td>13.140</td>\n",
       "      <td>THOUSANDS OF HANDKERCHIEFS WERE WAVING ABOVE T...</td>\n",
       "      <td>Thousands of handkerchiefs were waving above t...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>405</th>\n",
       "      <td>2.695</td>\n",
       "      <td>IT'S ALMOST BEYOND CONJECTURE</td>\n",
       "      <td>It's almost beyond conjecture.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>406</th>\n",
       "      <td>7.805</td>\n",
       "      <td>THIS REALITY BEGINS TO EXPLAIN THE DARK POWER ...</td>\n",
       "      <td>This reality begins to explain the dark power ...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>524</th>\n",
       "      <td>3.195</td>\n",
       "      <td>BROTHER MAC ARDLE BROTHER KEOGH</td>\n",
       "      <td>Brother McCartill, Brother Kiaff.</td>\n",
       "      <td>0.600000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>1.805</td>\n",
       "      <td>HANS STIRS NOT</td>\n",
       "      <td>Hans Sturznide.</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>918</th>\n",
       "      <td>3.000</td>\n",
       "      <td>THAT IS TRUE BADAUDERIE</td>\n",
       "      <td>That is true, bad girl degree.</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cas￩ was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano Staedt-Loss</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows ￗ 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs                                            gt_text   \n",
       "0     8.230  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "403   5.370  DEPARTING FROM FIVE HUNDRED THOUSAND THROATS T...   \n",
       "404  13.140  THOUSANDS OF HANDKERCHIEFS WERE WAVING ABOVE T...   \n",
       "405   2.695                      IT'S ALMOST BEYOND CONJECTURE   \n",
       "406   7.805  THIS REALITY BEGINS TO EXPLAIN THE DARK POWER ...   \n",
       "..      ...                                                ...   \n",
       "524   3.195                    BROTHER MAC ARDLE BROTHER KEOGH   \n",
       "592   1.805                                     HANS STIRS NOT   \n",
       "918   3.000                            THAT IS TRUE BADAUDERIE   \n",
       "371   2.440                          CONSEIL WAS MY MANSERVANT   \n",
       "538   2.215                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text       wer   \n",
       "0    And often has my mother said while on her lap ...  0.000000  \\\n",
       "403  Departing from 500,000 throats, three cheers b...  0.000000   \n",
       "404  Thousands of handkerchiefs were waving above t...  0.000000   \n",
       "405                     It's almost beyond conjecture.  0.000000   \n",
       "406  This reality begins to explain the dark power ...  0.000000   \n",
       "..                                                 ...       ...   \n",
       "524                  Brother McCartill, Brother Kiaff.  0.600000   \n",
       "592                                    Hans Sturznide.  0.666667   \n",
       "918                     That is true, bad girl degree.  0.750000   \n",
       "371                         Cas￩ was my man's servant.  1.000000   \n",
       "538                                Stefano Staedt-Loss  1.500000   \n",
       "\n",
       "     hallucination  \n",
       "0            False  \n",
       "403          False  \n",
       "404          False  \n",
       "405          False  \n",
       "406          False  \n",
       "..             ...  \n",
       "524          False  \n",
       "592          False  \n",
       "918          False  \n",
       "371          False  \n",
       "538          False  \n",
       "\n",
       "[1000 rows x 5 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_wh_model(whisper.load_model('base.en'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9d582000",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 02:53&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 3.89%\n",
      "WER (w/o hallucinations): 3.84%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>None</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said, while on her lap...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>789</th>\n",
       "      <td>5.945</td>\n",
       "      <td>None</td>\n",
       "      <td>AND THIS PLAN WAS ADOPTED TOO IN ORDER TO EXTR...</td>\n",
       "      <td>and this plan was adopted too in order to extr...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>461</th>\n",
       "      <td>10.980</td>\n",
       "      <td>None</td>\n",
       "      <td>SHE MEANWHILE PASSED HER LIFE WITH HER PARENTS...</td>\n",
       "      <td>She, meanwhile, passed her life with her paren...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>464</th>\n",
       "      <td>8.845</td>\n",
       "      <td>None</td>\n",
       "      <td>ONE DAY WHEN THE BOY WAS SENT BY HIS GRANDFATH...</td>\n",
       "      <td>One day when the boy was sent by his grandfath...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>465</th>\n",
       "      <td>8.785</td>\n",
       "      <td>None</td>\n",
       "      <td>THE BED SHE TOO WELL REMEMBERED WAS THERE AND ...</td>\n",
       "      <td>The bed she too well remembered was there, and...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>524</th>\n",
       "      <td>3.195</td>\n",
       "      <td>None</td>\n",
       "      <td>BROTHER MAC ARDLE BROTHER KEOGH</td>\n",
       "      <td>Brother McCardle. Brother Kiyof.</td>\n",
       "      <td>0.600000</td>\n",
       "      <td>0.600000</td>\n",
       "      <td>0.800000</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>288</th>\n",
       "      <td>1.905</td>\n",
       "      <td>None</td>\n",
       "      <td>I DELIGHT IN YOUR KITCHEN</td>\n",
       "      <td>by delighting your kitchen.</td>\n",
       "      <td>0.600000</td>\n",
       "      <td>0.600000</td>\n",
       "      <td>0.800000</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>121</th>\n",
       "      <td>15.270</td>\n",
       "      <td>None</td>\n",
       "      <td>AT LAST THE LITTLE MICE STAYED AWAY ALSO AND T...</td>\n",
       "      <td>At last the little mice stayed away also, and ...</td>\n",
       "      <td>0.636364</td>\n",
       "      <td>0.636364</td>\n",
       "      <td>0.636364</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>918</th>\n",
       "      <td>3.000</td>\n",
       "      <td>None</td>\n",
       "      <td>THAT IS TRUE BADAUDERIE</td>\n",
       "      <td>That is true Bad Delt Grey.</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.625000</td>\n",
       "      <td>0.375000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano Staedtlos</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "0     8.230  None  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "789   5.945  None  AND THIS PLAN WAS ADOPTED TOO IN ORDER TO EXTR...   \n",
       "461  10.980  None  SHE MEANWHILE PASSED HER LIFE WITH HER PARENTS...   \n",
       "464   8.845  None  ONE DAY WHEN THE BOY WAS SENT BY HIS GRANDFATH...   \n",
       "465   8.785  None  THE BED SHE TOO WELL REMEMBERED WAS THERE AND ...   \n",
       "..      ...   ...                                                ...   \n",
       "524   3.195  None                    BROTHER MAC ARDLE BROTHER KEOGH   \n",
       "288   1.905  None                          I DELIGHT IN YOUR KITCHEN   \n",
       "121  15.270  None  AT LAST THE LITTLE MICE STAYED AWAY ALSO AND T...   \n",
       "918   3.000  None                            THAT IS TRUE BADAUDERIE   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "0    And often has my mother said, while on her lap...  0.000000  0.000000  \\\n",
       "789  and this plan was adopted too in order to extr...  0.000000  0.000000   \n",
       "461  She, meanwhile, passed her life with her paren...  0.000000  0.000000   \n",
       "464  One day when the boy was sent by his grandfath...  0.000000  0.000000   \n",
       "465  The bed she too well remembered was there, and...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "524                   Brother McCardle. Brother Kiyof.  0.600000  0.600000   \n",
       "288                        by delighting your kitchen.  0.600000  0.600000   \n",
       "121  At last the little mice stayed away also, and ...  0.636364  0.636364   \n",
       "918                        That is true Bad Delt Grey.  0.750000  0.500000   \n",
       "538                                  Stefano Staedtlos  1.000000  1.000000   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "0    0.000000  1.000000          False  \n",
       "789  0.000000  1.000000          False  \n",
       "461  0.000000  1.000000          False  \n",
       "464  0.000000  1.000000          False  \n",
       "465  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "524  0.800000  0.200000          False  \n",
       "288  0.800000  0.200000          False  \n",
       "121  0.636364  0.363636          False  \n",
       "918  0.625000  0.375000          False  \n",
       "538  1.000000  0.000000          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_wh_model(whisper.load_model('small.en'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "64b34902",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 06:22&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 4.19%\n",
      "WER (w/o hallucinations): 3.19%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>386</th>\n",
       "      <td>5.915</td>\n",
       "      <td>YES WE ARE CERTAINLY I REPLIED EVASIVELY BUT A...</td>\n",
       "      <td>Yes, we are, certainly, I replied evasively, b...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>507</th>\n",
       "      <td>6.480</td>\n",
       "      <td>HIS CONDUCT AND PRESENCE OF MIND IN THIS EMERG...</td>\n",
       "      <td>His conduct and presence of mind in this emerg...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>865</th>\n",
       "      <td>4.315</td>\n",
       "      <td>THEIR SUFFERINGS HAVE NEVER YET BEEN FITLY CHR...</td>\n",
       "      <td>Their sufferings have never yet been fitly chr...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>509</th>\n",
       "      <td>13.610</td>\n",
       "      <td>FROM THE SAME MEN NEW REGIMENTS AND NEW COMPAN...</td>\n",
       "      <td>From the same men new regiments and new compan...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>511</th>\n",
       "      <td>12.655</td>\n",
       "      <td>THOUGH THE DISCIPLINE OF THE FORMER PARLIAMENT...</td>\n",
       "      <td>Though the discipline of the former parliament...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>782</th>\n",
       "      <td>2.260</td>\n",
       "      <td>TO DAY I SHOUTED</td>\n",
       "      <td>Today, I shouted.</td>\n",
       "      <td>0.50</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>524</th>\n",
       "      <td>3.195</td>\n",
       "      <td>BROTHER MAC ARDLE BROTHER KEOGH</td>\n",
       "      <td>Brother McCardle, Brother Kiyof.</td>\n",
       "      <td>0.60</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>918</th>\n",
       "      <td>3.000</td>\n",
       "      <td>THAT IS TRUE BADAUDERIE</td>\n",
       "      <td>That is true bad health grief.</td>\n",
       "      <td>0.75</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefanos Daedalus</td>\n",
       "      <td>1.00</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>226</th>\n",
       "      <td>6.750</td>\n",
       "      <td>HE CONTINUED HIS PRETENDED SEARCH AND TO GIVE ...</td>\n",
       "      <td>He continued his pretended search, and to give...</td>\n",
       "      <td>9.80</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs                                            gt_text   \n",
       "386   5.915  YES WE ARE CERTAINLY I REPLIED EVASIVELY BUT A...  \\\n",
       "507   6.480  HIS CONDUCT AND PRESENCE OF MIND IN THIS EMERG...   \n",
       "865   4.315  THEIR SUFFERINGS HAVE NEVER YET BEEN FITLY CHR...   \n",
       "509  13.610  FROM THE SAME MEN NEW REGIMENTS AND NEW COMPAN...   \n",
       "511  12.655  THOUGH THE DISCIPLINE OF THE FORMER PARLIAMENT...   \n",
       "..      ...                                                ...   \n",
       "782   2.260                                   TO DAY I SHOUTED   \n",
       "524   3.195                    BROTHER MAC ARDLE BROTHER KEOGH   \n",
       "918   3.000                            THAT IS TRUE BADAUDERIE   \n",
       "538   2.215                                  STEPHANOS DEDALOS   \n",
       "226   6.750  HE CONTINUED HIS PRETENDED SEARCH AND TO GIVE ...   \n",
       "\n",
       "                                                  text   wer  hallucination  \n",
       "386  Yes, we are, certainly, I replied evasively, b...  0.00          False  \n",
       "507  His conduct and presence of mind in this emerg...  0.00          False  \n",
       "865  Their sufferings have never yet been fitly chr...  0.00          False  \n",
       "509  From the same men new regiments and new compan...  0.00          False  \n",
       "511  Though the discipline of the former parliament...  0.00          False  \n",
       "..                                                 ...   ...            ...  \n",
       "782                                  Today, I shouted.  0.50          False  \n",
       "524                   Brother McCardle, Brother Kiyof.  0.60          False  \n",
       "918                     That is true bad health grief.  0.75          False  \n",
       "538                                  Stefanos Daedalus  1.00          False  \n",
       "226  He continued his pretended search, and to give...  9.80           True  \n",
       "\n",
       "[1000 rows x 5 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_wh_model(whisper.load_model('medium.en'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7f43fd34",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 07:39&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 6.07%\n",
      "WER (w/o hallucinations): 3.19%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>None</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said while on her lap ...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>606</th>\n",
       "      <td>2.610</td>\n",
       "      <td>None</td>\n",
       "      <td>WE SUFFER STIFLING PAINS</td>\n",
       "      <td>We suffer stifling pains.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>607</th>\n",
       "      <td>7.040</td>\n",
       "      <td>None</td>\n",
       "      <td>SATURDAY AUGUST FIFTEENTH THE SEA UNBROKEN ALL...</td>\n",
       "      <td>Saturday, August 15th. The sea unbroken all ro...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>608</th>\n",
       "      <td>3.070</td>\n",
       "      <td>None</td>\n",
       "      <td>THE HORIZON SEEMS EXTREMELY DISTANT</td>\n",
       "      <td>The horizon seems extremely distant.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>609</th>\n",
       "      <td>9.985</td>\n",
       "      <td>None</td>\n",
       "      <td>ALL MY DANGER AND SUFFERINGS WERE NEEDED TO ST...</td>\n",
       "      <td>All my danger and sufferings were needed to st...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>1.805</td>\n",
       "      <td>None</td>\n",
       "      <td>HANS STIRS NOT</td>\n",
       "      <td>Hans Sturznott</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>8.800</td>\n",
       "      <td>None</td>\n",
       "      <td>THOUGHT THE FIR TREE AND BELIEVED IT ALL BECAU...</td>\n",
       "      <td>thought the fir tree, and believed it all, bec...</td>\n",
       "      <td>4.285714</td>\n",
       "      <td>0.810811</td>\n",
       "      <td>0.810811</td>\n",
       "      <td>0.189189</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>902</th>\n",
       "      <td>7.370</td>\n",
       "      <td>None</td>\n",
       "      <td>I HAD A NAME I BELIEVE IN MY YOUNG DAYS BUT I ...</td>\n",
       "      <td>I had a name, I believe, in my young days, but...</td>\n",
       "      <td>7.476190</td>\n",
       "      <td>0.882022</td>\n",
       "      <td>0.882022</td>\n",
       "      <td>0.117978</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>610</th>\n",
       "      <td>7.370</td>\n",
       "      <td>None</td>\n",
       "      <td>YOU SEEM ANXIOUS MY UNCLE I SAID SEEING HIM CO...</td>\n",
       "      <td>\"'You seem anxious, my uncle,' I said, seeing ...</td>\n",
       "      <td>7.823529</td>\n",
       "      <td>0.886667</td>\n",
       "      <td>0.886667</td>\n",
       "      <td>0.113333</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>438</th>\n",
       "      <td>6.665</td>\n",
       "      <td>None</td>\n",
       "      <td>AS TO HIS AGE AND ALSO THE NAME OF HIS MASTER ...</td>\n",
       "      <td>As to his age, and also the name of his master...</td>\n",
       "      <td>8.631579</td>\n",
       "      <td>0.896175</td>\n",
       "      <td>0.896175</td>\n",
       "      <td>0.103825</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      secs   idx                                            gt_text   \n",
       "0    8.230  None  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "606  2.610  None                           WE SUFFER STIFLING PAINS   \n",
       "607  7.040  None  SATURDAY AUGUST FIFTEENTH THE SEA UNBROKEN ALL...   \n",
       "608  3.070  None                THE HORIZON SEEMS EXTREMELY DISTANT   \n",
       "609  9.985  None  ALL MY DANGER AND SUFFERINGS WERE NEEDED TO ST...   \n",
       "..     ...   ...                                                ...   \n",
       "592  1.805  None                                     HANS STIRS NOT   \n",
       "95   8.800  None  THOUGHT THE FIR TREE AND BELIEVED IT ALL BECAU...   \n",
       "902  7.370  None  I HAD A NAME I BELIEVE IN MY YOUNG DAYS BUT I ...   \n",
       "610  7.370  None  YOU SEEM ANXIOUS MY UNCLE I SAID SEEING HIM CO...   \n",
       "438  6.665  None  AS TO HIS AGE AND ALSO THE NAME OF HIS MASTER ...   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "0    And often has my mother said while on her lap ...  0.000000  0.000000  \\\n",
       "606                          We suffer stifling pains.  0.000000  0.000000   \n",
       "607  Saturday, August 15th. The sea unbroken all ro...  0.000000  0.000000   \n",
       "608               The horizon seems extremely distant.  0.000000  0.000000   \n",
       "609  All my danger and sufferings were needed to st...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "592                                     Hans Sturznott  0.666667  0.666667   \n",
       "95   thought the fir tree, and believed it all, bec...  4.285714  0.810811   \n",
       "902  I had a name, I believe, in my young days, but...  7.476190  0.882022   \n",
       "610  \"'You seem anxious, my uncle,' I said, seeing ...  7.823529  0.886667   \n",
       "438  As to his age, and also the name of his master...  8.631579  0.896175   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "0    0.000000  1.000000          False  \n",
       "606  0.000000  1.000000          False  \n",
       "607  0.000000  1.000000          False  \n",
       "608  0.000000  1.000000          False  \n",
       "609  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "592  0.833333  0.166667          False  \n",
       "95   0.810811  0.189189           True  \n",
       "902  0.882022  0.117978           True  \n",
       "610  0.886667  0.113333           True  \n",
       "438  0.896175  0.103825           True  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_wh_model(whisper.load_model('large-v2'))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "142d983b",
   "metadata": {},
   "source": [
    "### Quantized Whisper models"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8fea2b9f",
   "metadata": {},
   "outputs": [],
   "source": [
    "def test_model(modelfile, N=1000):\n",
    "    vqmodel = RQBottleneckTransformer.load_model(local_filename=modelfile).cuda()\n",
    "    stats = WERStats()\n",
    "    for snd, gt_text in progress_bar(librispeech_data('/data/LibriSpeech/test-clean'), total=N):\n",
    "        stoks = vqmodel.encode_audio(snd.cuda())\n",
    "        text = vqmodel.decode_text(stoks[0])[0].text\n",
    "        diff = stats.push_sample(snd, gt_text, text)\n",
    "        last_diff = diff.alignments[0][-1]\n",
    "        stats.push(hallucination = last_diff.type == 'insert' and last_diff.hyp_end_idx - last_diff.hyp_start_idx > 3)\n",
    "    stats = stats.df().sort_values('wer')\n",
    "    print(f\"WER: {stats.wer.mean()*100:.2f}%\")\n",
    "    print(f\"WER (w/o hallucinations): {stats[~stats['hallucination']].wer.mean()*100:.2f}%\")\n",
    "    return stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c535a56f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:10&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 16.06%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_texts</th>\n",
       "      <th>texts</th>\n",
       "      <th>wers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>207</th>\n",
       "      <td>4.075</td>\n",
       "      <td>SEVERAL HUNDRED FREE STATE MEN PROMPTLY RESPON...</td>\n",
       "      <td>several hundred free state men promptly respon...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>209</th>\n",
       "      <td>5.295</td>\n",
       "      <td>THE LEADERS OF THE CONSPIRACY BECAME DISTRUSTF...</td>\n",
       "      <td>The leaders of the conspiracy became distrustf...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>709</th>\n",
       "      <td>2.440</td>\n",
       "      <td>THE THREE MODES OF MANAGEMENT</td>\n",
       "      <td>The three modes of management.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>708</th>\n",
       "      <td>13.020</td>\n",
       "      <td>THE PAIN PRODUCED BY AN ACT OF HASTY AND ANGRY...</td>\n",
       "      <td>The pain produced by an act of hasty and angry...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>705</th>\n",
       "      <td>5.250</td>\n",
       "      <td>THEY ARE CHIEFLY FORMED FROM COMBINATIONS OF T...</td>\n",
       "      <td>They are chiefly formed from combinations of t...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>COSA was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>144</th>\n",
       "      <td>4.680</td>\n",
       "      <td>AND BESIDES SUPPOSE THEE DOES LEARN MEDICINE</td>\n",
       "      <td>and be sides, supposed to be lost, Lord medicine.</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>907</th>\n",
       "      <td>4.195</td>\n",
       "      <td>MADAME QUINSON BESIDES CAN ANSWER YOUR ENQUIRIES</td>\n",
       "      <td>Madam Gwen-Saun, besides Ken Sir Ian Corrie's.</td>\n",
       "      <td>1.142857</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>187</th>\n",
       "      <td>2.230</td>\n",
       "      <td>NO ITS NOT TOO SOON</td>\n",
       "      <td>Know what's sought to assume.</td>\n",
       "      <td>1.200000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stephano's Nerdos.</td>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs                                           gt_texts   \n",
       "207   4.075  SEVERAL HUNDRED FREE STATE MEN PROMPTLY RESPON...  \\\n",
       "209   5.295  THE LEADERS OF THE CONSPIRACY BECAME DISTRUSTF...   \n",
       "709   2.440                      THE THREE MODES OF MANAGEMENT   \n",
       "708  13.020  THE PAIN PRODUCED BY AN ACT OF HASTY AND ANGRY...   \n",
       "705   5.250  THEY ARE CHIEFLY FORMED FROM COMBINATIONS OF T...   \n",
       "..      ...                                                ...   \n",
       "371   2.440                          CONSEIL WAS MY MANSERVANT   \n",
       "144   4.680       AND BESIDES SUPPOSE THEE DOES LEARN MEDICINE   \n",
       "907   4.195   MADAME QUINSON BESIDES CAN ANSWER YOUR ENQUIRIES   \n",
       "187   2.230                                NO ITS NOT TOO SOON   \n",
       "538   2.215                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                 texts      wers  \n",
       "207  several hundred free state men promptly respon...  0.000000  \n",
       "209  The leaders of the conspiracy became distrustf...  0.000000  \n",
       "709                     The three modes of management.  0.000000  \n",
       "708  The pain produced by an act of hasty and angry...  0.000000  \n",
       "705  They are chiefly formed from combinations of t...  0.000000  \n",
       "..                                                 ...       ...  \n",
       "371                         COSA was my man's servant.  1.000000  \n",
       "144  and be sides, supposed to be lost, Lord medicine.  1.000000  \n",
       "907     Madam Gwen-Saun, besides Ken Sir Ian Corrie's.  1.142857  \n",
       "187                      Know what's sought to assume.  1.200000  \n",
       "538                                 Stephano's Nerdos.  1.500000  \n",
       "\n",
       "[1000 rows x 4 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(None) # the old stoks model from early 2023"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8f85967c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:12&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 8.80%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_texts</th>\n",
       "      <th>texts</th>\n",
       "      <th>wers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said, while on her lap...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>283</th>\n",
       "      <td>1.420</td>\n",
       "      <td>DIRECTION</td>\n",
       "      <td>direction.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>282</th>\n",
       "      <td>2.385</td>\n",
       "      <td>I DIDN'T PREACH WITHOUT DIRECTION</td>\n",
       "      <td>I didn't preach without direction.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>624</th>\n",
       "      <td>3.975</td>\n",
       "      <td>I SHUDDER AS I RECALL THESE MONSTERS TO MY REM...</td>\n",
       "      <td>I shudder as I recall these monsters to my rem...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>279</th>\n",
       "      <td>10.490</td>\n",
       "      <td>WE CAN ALL BE SERVANTS OF GOD WHEREVER OUR LOT...</td>\n",
       "      <td>We can all be servants of God, wherever our lo...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>820</th>\n",
       "      <td>2.155</td>\n",
       "      <td>THE FORMER BOOLOOROO GROANED</td>\n",
       "      <td>the former Boula Rook round.</td>\n",
       "      <td>0.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>918</th>\n",
       "      <td>3.000</td>\n",
       "      <td>THAT IS TRUE BADAUDERIE</td>\n",
       "      <td>That is true, bad, old-gree.</td>\n",
       "      <td>0.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>105</th>\n",
       "      <td>6.555</td>\n",
       "      <td>IF IT ONLY WERE NOT SO DARK HERE AND SO TERRIB...</td>\n",
       "      <td>If... ... ... ... ... ... ... ... ... ... ... ...</td>\n",
       "      <td>0.916667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Jose was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefanos de los</td>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs                                           gt_texts   \n",
       "0     8.230  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "283   1.420                                          DIRECTION   \n",
       "282   2.385                  I DIDN'T PREACH WITHOUT DIRECTION   \n",
       "624   3.975  I SHUDDER AS I RECALL THESE MONSTERS TO MY REM...   \n",
       "279  10.490  WE CAN ALL BE SERVANTS OF GOD WHEREVER OUR LOT...   \n",
       "..      ...                                                ...   \n",
       "820   2.155                       THE FORMER BOOLOOROO GROANED   \n",
       "918   3.000                            THAT IS TRUE BADAUDERIE   \n",
       "105   6.555  IF IT ONLY WERE NOT SO DARK HERE AND SO TERRIB...   \n",
       "371   2.440                          CONSEIL WAS MY MANSERVANT   \n",
       "538   2.215                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                 texts      wers  \n",
       "0    And often has my mother said, while on her lap...  0.000000  \n",
       "283                                         direction.  0.000000  \n",
       "282                 I didn't preach without direction.  0.000000  \n",
       "624  I shudder as I recall these monsters to my rem...  0.000000  \n",
       "279  We can all be servants of God, wherever our lo...  0.000000  \n",
       "..                                                 ...       ...  \n",
       "820                       the former Boula Rook round.  0.750000  \n",
       "918                       That is true, bad, old-gree.  0.750000  \n",
       "105  If... ... ... ... ... ... ... ... ... ... ... ...  0.916667  \n",
       "371                         Jose was my man's servant.  1.000000  \n",
       "538                                    Stefanos de los  1.500000  \n",
       "\n",
       "[1000 rows x 4 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model('vq-ce9.2.model')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4253b876",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:13&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 10.26%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_texts</th>\n",
       "      <th>texts</th>\n",
       "      <th>wers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>789</th>\n",
       "      <td>5.945</td>\n",
       "      <td>AND THIS PLAN WAS ADOPTED TOO IN ORDER TO EXTR...</td>\n",
       "      <td>And this plan was adopted too, in order to ext...</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>365</th>\n",
       "      <td>5.780</td>\n",
       "      <td>I WILL SHOW YOU WHAT A GOOD JOB I DID AND SHE ...</td>\n",
       "      <td>I will show you what a good job I did. And she...</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>722</th>\n",
       "      <td>10.720</td>\n",
       "      <td>AS I SPOKE I MADE HIM A GRACIOUS BOW AND I THI...</td>\n",
       "      <td>As I spoke, I made him a gracious bow, and I t...</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>723</th>\n",
       "      <td>7.840</td>\n",
       "      <td>I HAVE COME TO YOUR SHORES MISTER PRESIDENT WI...</td>\n",
       "      <td>I have come to your shores, Mr. President, wit...</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>5.335</td>\n",
       "      <td>SOMETIMES IT IS CALLED A CRAZY QUILT BECAUSE T...</td>\n",
       "      <td>Sometimes it is called a crazy quilt because t...</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>2.020</td>\n",
       "      <td>SQUEAK SQUEAK</td>\n",
       "      <td>Squick. Squick.</td>\n",
       "      <td>1.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stephanos de Arlos.</td>\n",
       "      <td>1.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>288</th>\n",
       "      <td>1.905</td>\n",
       "      <td>I DELIGHT IN YOUR KITCHEN</td>\n",
       "      <td>I'd like to introduce you in your kitchen.</td>\n",
       "      <td>1.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Call say, was my man servant?</td>\n",
       "      <td>1.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>381</th>\n",
       "      <td>4.880</td>\n",
       "      <td>CONSEIL I CALLED A THIRD TIME CONSEIL APPEARED</td>\n",
       "      <td>Can't say, at call the third time. Can't say a...</td>\n",
       "      <td>1.125</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs                                           gt_texts   \n",
       "789   5.945  AND THIS PLAN WAS ADOPTED TOO IN ORDER TO EXTR...  \\\n",
       "365   5.780  I WILL SHOW YOU WHAT A GOOD JOB I DID AND SHE ...   \n",
       "722  10.720  AS I SPOKE I MADE HIM A GRACIOUS BOW AND I THI...   \n",
       "723   7.840  I HAVE COME TO YOUR SHORES MISTER PRESIDENT WI...   \n",
       "362   5.335  SOMETIMES IT IS CALLED A CRAZY QUILT BECAUSE T...   \n",
       "..      ...                                                ...   \n",
       "106   2.020                                      SQUEAK SQUEAK   \n",
       "538   2.215                                  STEPHANOS DEDALOS   \n",
       "288   1.905                          I DELIGHT IN YOUR KITCHEN   \n",
       "371   2.440                          CONSEIL WAS MY MANSERVANT   \n",
       "381   4.880     CONSEIL I CALLED A THIRD TIME CONSEIL APPEARED   \n",
       "\n",
       "                                                 texts   wers  \n",
       "789  And this plan was adopted too, in order to ext...  0.000  \n",
       "365  I will show you what a good job I did. And she...  0.000  \n",
       "722  As I spoke, I made him a gracious bow, and I t...  0.000  \n",
       "723  I have come to your shores, Mr. President, wit...  0.000  \n",
       "362  Sometimes it is called a crazy quilt because t...  0.000  \n",
       "..                                                 ...    ...  \n",
       "106                                    Squick. Squick.  1.000  \n",
       "538                                Stephanos de Arlos.  1.000  \n",
       "288         I'd like to introduce you in your kitchen.  1.000  \n",
       "371                      Call say, was my man servant?  1.000  \n",
       "381  Can't say, at call the third time. Can't say a...  1.125  \n",
       "\n",
       "[1000 rows x 4 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model('vq-256c.model')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "548a4a14",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:10&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 10.24%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_texts</th>\n",
       "      <th>texts</th>\n",
       "      <th>wers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>710</th>\n",
       "      <td>11.490</td>\n",
       "      <td>TO SUPPOSE THAT THE OBJECT OF THIS WORK IS TO ...</td>\n",
       "      <td>To suppose that the object of this work is to ...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>629</th>\n",
       "      <td>3.235</td>\n",
       "      <td>TWO HOURS AFTERWARDS A TERRIBLE SHOCK AWOKE ME</td>\n",
       "      <td>Two hours afterwards, a terrible shock awoke me.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>640</th>\n",
       "      <td>1.740</td>\n",
       "      <td>POOR ALICE</td>\n",
       "      <td>Poor Alice.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>262</th>\n",
       "      <td>2.435</td>\n",
       "      <td>THAT'S WHAT YOU'D LIKE TO BE DOING IS IT</td>\n",
       "      <td>That's what you'd like to be doing, is it?</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>644</th>\n",
       "      <td>3.105</td>\n",
       "      <td>AND YESTERDAY THINGS WENT ON JUST AS USUAL</td>\n",
       "      <td>And yesterday, things went on just as usual.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>187</th>\n",
       "      <td>2.230</td>\n",
       "      <td>NO ITS NOT TOO SOON</td>\n",
       "      <td>No, it's not just here.</td>\n",
       "      <td>0.800000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>115</th>\n",
       "      <td>4.470</td>\n",
       "      <td>WHO IS HUMPY DUMPY ASKED THE MICE</td>\n",
       "      <td>Who is a MP? Don't be. Ask the mice.</td>\n",
       "      <td>0.857143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cross say, was my man servant.</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>2.020</td>\n",
       "      <td>SQUEAK SQUEAK</td>\n",
       "      <td>quick, quick.</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stephenos der los.</td>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs                                           gt_texts   \n",
       "710  11.490  TO SUPPOSE THAT THE OBJECT OF THIS WORK IS TO ...  \\\n",
       "629   3.235     TWO HOURS AFTERWARDS A TERRIBLE SHOCK AWOKE ME   \n",
       "640   1.740                                         POOR ALICE   \n",
       "262   2.435           THAT'S WHAT YOU'D LIKE TO BE DOING IS IT   \n",
       "644   3.105         AND YESTERDAY THINGS WENT ON JUST AS USUAL   \n",
       "..      ...                                                ...   \n",
       "187   2.230                                NO ITS NOT TOO SOON   \n",
       "115   4.470                  WHO IS HUMPY DUMPY ASKED THE MICE   \n",
       "371   2.440                          CONSEIL WAS MY MANSERVANT   \n",
       "106   2.020                                      SQUEAK SQUEAK   \n",
       "538   2.215                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                 texts      wers  \n",
       "710  To suppose that the object of this work is to ...  0.000000  \n",
       "629   Two hours afterwards, a terrible shock awoke me.  0.000000  \n",
       "640                                        Poor Alice.  0.000000  \n",
       "262         That's what you'd like to be doing, is it?  0.000000  \n",
       "644       And yesterday, things went on just as usual.  0.000000  \n",
       "..                                                 ...       ...  \n",
       "187                            No, it's not just here.  0.800000  \n",
       "115               Who is a MP? Don't be. Ask the mice.  0.857143  \n",
       "371                     Cross say, was my man servant.  1.000000  \n",
       "106                                      quick, quick.  1.000000  \n",
       "538                                 Stephenos der los.  1.500000  \n",
       "\n",
       "[1000 rows x 4 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model('vq-256c-cosine.model')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "689f6f8b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:11&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 21.75%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_texts</th>\n",
       "      <th>texts</th>\n",
       "      <th>wers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>709</th>\n",
       "      <td>2.440</td>\n",
       "      <td>THE THREE MODES OF MANAGEMENT</td>\n",
       "      <td>The Three Modes of Management</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>419</th>\n",
       "      <td>2.415</td>\n",
       "      <td>FATHOM SIX FEET</td>\n",
       "      <td>Fathom six feet.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>703</th>\n",
       "      <td>4.775</td>\n",
       "      <td>NATURE OF THE EFFECT PRODUCED BY EARLY IMPRESS...</td>\n",
       "      <td>nature of the effect produced by early impress...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>693</th>\n",
       "      <td>2.110</td>\n",
       "      <td>I AM VERY GLAD</td>\n",
       "      <td>I am very glad.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>686</th>\n",
       "      <td>2.740</td>\n",
       "      <td>NO MY LITTLE SON SHE SAID</td>\n",
       "      <td>No, my little son, she said.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>627</th>\n",
       "      <td>3.060</td>\n",
       "      <td>TUESDAY AUGUST EIGHTEENTH</td>\n",
       "      <td>2. Day August 8th</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>820</th>\n",
       "      <td>2.155</td>\n",
       "      <td>THE FORMER BOOLOOROO GROANED</td>\n",
       "      <td>The former Bill of Rook around.</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>5.530</td>\n",
       "      <td>KESWICK MARCH TWENTY SECOND EIGHTEEN THIRTY SE...</td>\n",
       "      <td>Yes, we wish between second 1837. Did you reme...</td>\n",
       "      <td>1.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>2.020</td>\n",
       "      <td>SQUEAK SQUEAK</td>\n",
       "      <td>Quick, quick, quick.</td>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>792</th>\n",
       "      <td>1.810</td>\n",
       "      <td>VENICE</td>\n",
       "      <td>Then Next</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      secs                                           gt_texts   \n",
       "709  2.440                      THE THREE MODES OF MANAGEMENT  \\\n",
       "419  2.415                                    FATHOM SIX FEET   \n",
       "703  4.775  NATURE OF THE EFFECT PRODUCED BY EARLY IMPRESS...   \n",
       "693  2.110                                     I AM VERY GLAD   \n",
       "686  2.740                          NO MY LITTLE SON SHE SAID   \n",
       "..     ...                                                ...   \n",
       "627  3.060                          TUESDAY AUGUST EIGHTEENTH   \n",
       "820  2.155                       THE FORMER BOOLOOROO GROANED   \n",
       "28   5.530  KESWICK MARCH TWENTY SECOND EIGHTEEN THIRTY SE...   \n",
       "106  2.020                                      SQUEAK SQUEAK   \n",
       "792  1.810                                             VENICE   \n",
       "\n",
       "                                                 texts      wers  \n",
       "709                      The Three Modes of Management  0.000000  \n",
       "419                                   Fathom six feet.  0.000000  \n",
       "703  nature of the effect produced by early impress...  0.000000  \n",
       "693                                    I am very glad.  0.000000  \n",
       "686                       No, my little son, she said.  0.000000  \n",
       "..                                                 ...       ...  \n",
       "627                                  2. Day August 8th  1.000000  \n",
       "820                    The former Bill of Rook around.  1.000000  \n",
       "28   Yes, we wish between second 1837. Did you reme...  1.333333  \n",
       "106                               Quick, quick, quick.  1.500000  \n",
       "792                                          Then Next  2.000000  \n",
       "\n",
       "[1000 rows x 4 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model('vq-2d-256c.model')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "375d13b5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:11&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 11.61%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_texts</th>\n",
       "      <th>texts</th>\n",
       "      <th>wers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>686</th>\n",
       "      <td>2.740</td>\n",
       "      <td>NO MY LITTLE SON SHE SAID</td>\n",
       "      <td>No, my little son, she said.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>902</th>\n",
       "      <td>7.370</td>\n",
       "      <td>I HAD A NAME I BELIEVE IN MY YOUNG DAYS BUT I ...</td>\n",
       "      <td>I had a name I believe in my young days, but I...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>904</th>\n",
       "      <td>3.300</td>\n",
       "      <td>YOU DO ME A GREAT HONOUR</td>\n",
       "      <td>You do me a great honor.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>228</th>\n",
       "      <td>6.775</td>\n",
       "      <td>AS HE HAD PROMISED TO PROTECT THE HOTEL THE RE...</td>\n",
       "      <td>As he had promised to protect the hotel, the r...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>521</th>\n",
       "      <td>3.440</td>\n",
       "      <td>SOON THE WHOLE BRIDGE WAS TREMBLING AND RESOUN...</td>\n",
       "      <td>Soon the whole bridge was trembling and resoun...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>918</th>\n",
       "      <td>3.000</td>\n",
       "      <td>THAT IS TRUE BADAUDERIE</td>\n",
       "      <td>That is true, bad, old-gree.</td>\n",
       "      <td>0.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>381</th>\n",
       "      <td>4.880</td>\n",
       "      <td>CONSEIL I CALLED A THIRD TIME CONSEIL APPEARED</td>\n",
       "      <td>Conse, at call to third town. Conse, appeared.</td>\n",
       "      <td>0.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>115</th>\n",
       "      <td>4.470</td>\n",
       "      <td>WHO IS HUMPY DUMPY ASKED THE MICE</td>\n",
       "      <td>Who eats umpi, don't pee? Ask the mice.</td>\n",
       "      <td>0.857143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stephenau Stairlauce.</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>2.020</td>\n",
       "      <td>SQUEAK SQUEAK</td>\n",
       "      <td>Speak. Speak. Speak.</td>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      secs                                           gt_texts   \n",
       "686  2.740                          NO MY LITTLE SON SHE SAID  \\\n",
       "902  7.370  I HAD A NAME I BELIEVE IN MY YOUNG DAYS BUT I ...   \n",
       "904  3.300                           YOU DO ME A GREAT HONOUR   \n",
       "228  6.775  AS HE HAD PROMISED TO PROTECT THE HOTEL THE RE...   \n",
       "521  3.440  SOON THE WHOLE BRIDGE WAS TREMBLING AND RESOUN...   \n",
       "..     ...                                                ...   \n",
       "918  3.000                            THAT IS TRUE BADAUDERIE   \n",
       "381  4.880     CONSEIL I CALLED A THIRD TIME CONSEIL APPEARED   \n",
       "115  4.470                  WHO IS HUMPY DUMPY ASKED THE MICE   \n",
       "538  2.215                                  STEPHANOS DEDALOS   \n",
       "106  2.020                                      SQUEAK SQUEAK   \n",
       "\n",
       "                                                 texts      wers  \n",
       "686                       No, my little son, she said.  0.000000  \n",
       "902  I had a name I believe in my young days, but I...  0.000000  \n",
       "904                           You do me a great honor.  0.000000  \n",
       "228  As he had promised to protect the hotel, the r...  0.000000  \n",
       "521  Soon the whole bridge was trembling and resoun...  0.000000  \n",
       "..                                                 ...       ...  \n",
       "918                       That is true, bad, old-gree.  0.750000  \n",
       "381     Conse, at call to third town. Conse, appeared.  0.750000  \n",
       "115            Who eats umpi, don't pee? Ask the mice.  0.857143  \n",
       "538                              Stephenau Stairlauce.  1.000000  \n",
       "106                               Speak. Speak. Speak.  1.500000  \n",
       "\n",
       "[1000 rows x 4 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model('vq-2d-256c-cosine.model')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a5fae160",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:10&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 16.13%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_texts</th>\n",
       "      <th>texts</th>\n",
       "      <th>wers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>652</th>\n",
       "      <td>3.475</td>\n",
       "      <td>I AM SO VERY TIRED OF BEING ALL ALONE HERE</td>\n",
       "      <td>I'm so very tired of being all alone here.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>906</th>\n",
       "      <td>2.610</td>\n",
       "      <td>AT YOUR SERVICE SIR</td>\n",
       "      <td>At your service, sir.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>904</th>\n",
       "      <td>3.300</td>\n",
       "      <td>YOU DO ME A GREAT HONOUR</td>\n",
       "      <td>You do me a great honor.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>902</th>\n",
       "      <td>7.370</td>\n",
       "      <td>I HAD A NAME I BELIEVE IN MY YOUNG DAYS BUT I ...</td>\n",
       "      <td>I had a name I believe in my young days, but I...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>901</th>\n",
       "      <td>2.755</td>\n",
       "      <td>I NEVER HAD ANY FAMILY</td>\n",
       "      <td>I never had any family.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>448</th>\n",
       "      <td>2.215</td>\n",
       "      <td>WHO TOUCHES ME AM I IN BED</td>\n",
       "      <td>Look at us, me, our young dad.</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>934</th>\n",
       "      <td>4.205</td>\n",
       "      <td>I RESIDE IN THE MARAIS RUE DE DOUZE PORTES</td>\n",
       "      <td>Irae's eye in the Ma'rae's crew did to support.</td>\n",
       "      <td>1.111111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Step 4, Zetelos.</td>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>1.695</td>\n",
       "      <td>FAREWELL MADAM</td>\n",
       "      <td>Fair will, damn.</td>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cos they were my man's servant.</td>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      secs                                           gt_texts   \n",
       "652  3.475         I AM SO VERY TIRED OF BEING ALL ALONE HERE  \\\n",
       "906  2.610                                AT YOUR SERVICE SIR   \n",
       "904  3.300                           YOU DO ME A GREAT HONOUR   \n",
       "902  7.370  I HAD A NAME I BELIEVE IN MY YOUNG DAYS BUT I ...   \n",
       "901  2.755                             I NEVER HAD ANY FAMILY   \n",
       "..     ...                                                ...   \n",
       "448  2.215                         WHO TOUCHES ME AM I IN BED   \n",
       "934  4.205         I RESIDE IN THE MARAIS RUE DE DOUZE PORTES   \n",
       "538  2.215                                  STEPHANOS DEDALOS   \n",
       "16   1.695                                     FAREWELL MADAM   \n",
       "371  2.440                          CONSEIL WAS MY MANSERVANT   \n",
       "\n",
       "                                                 texts      wers  \n",
       "652         I'm so very tired of being all alone here.  0.000000  \n",
       "906                              At your service, sir.  0.000000  \n",
       "904                           You do me a great honor.  0.000000  \n",
       "902  I had a name I believe in my young days, but I...  0.000000  \n",
       "901                            I never had any family.  0.000000  \n",
       "..                                                 ...       ...  \n",
       "448                     Look at us, me, our young dad.  1.000000  \n",
       "934    Irae's eye in the Ma'rae's crew did to support.  1.111111  \n",
       "538                                   Step 4, Zetelos.  1.500000  \n",
       "16                                    Fair will, damn.  1.500000  \n",
       "371                    Cos they were my man's servant.  1.500000  \n",
       "\n",
       "[1000 rows x 4 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# full crop\n",
    "test_model('vq-2d-256c-cosine-padfix2.model')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9e3307b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:10&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 11.17%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_texts</th>\n",
       "      <th>texts</th>\n",
       "      <th>wers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>839</th>\n",
       "      <td>2.275</td>\n",
       "      <td>THE CAPTAIN SHOOK HIS HEAD</td>\n",
       "      <td>The captain shook his head.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>408</th>\n",
       "      <td>9.935</td>\n",
       "      <td>NEMO BUILDS A FABULOUS FUTURISTIC SUBMARINE TH...</td>\n",
       "      <td>Nemo builds a fabulous futuristic submarine, t...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>405</th>\n",
       "      <td>2.695</td>\n",
       "      <td>IT'S ALMOST BEYOND CONJECTURE</td>\n",
       "      <td>It's almost beyond conjecture.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>404</th>\n",
       "      <td>13.140</td>\n",
       "      <td>THOUSANDS OF HANDKERCHIEFS WERE WAVING ABOVE T...</td>\n",
       "      <td>Thousands of handkerchiefs were waving above t...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>790</th>\n",
       "      <td>14.900</td>\n",
       "      <td>BRIGHTER THAN EARLY DAWN'S MOST BRILLIANT DYE ...</td>\n",
       "      <td>Brighter than early dawn's most brilliant dye ...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stephenos dellos</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>1.805</td>\n",
       "      <td>HANS STIRS NOT</td>\n",
       "      <td>Honsters nod.</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>907</th>\n",
       "      <td>4.195</td>\n",
       "      <td>MADAME QUINSON BESIDES CAN ANSWER YOUR ENQUIRIES</td>\n",
       "      <td>Madam Quinsong, besides Cinanza, you're in que...</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>115</th>\n",
       "      <td>4.470</td>\n",
       "      <td>WHO IS HUMPY DUMPY ASKED THE MICE</td>\n",
       "      <td>Phew, he's on P, don't pee. Ask the mice.</td>\n",
       "      <td>1.142857</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cos they were my man's servant.</td>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows ￗ 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs                                           gt_texts   \n",
       "839   2.275                         THE CAPTAIN SHOOK HIS HEAD  \\\n",
       "408   9.935  NEMO BUILDS A FABULOUS FUTURISTIC SUBMARINE TH...   \n",
       "405   2.695                      IT'S ALMOST BEYOND CONJECTURE   \n",
       "404  13.140  THOUSANDS OF HANDKERCHIEFS WERE WAVING ABOVE T...   \n",
       "790  14.900  BRIGHTER THAN EARLY DAWN'S MOST BRILLIANT DYE ...   \n",
       "..      ...                                                ...   \n",
       "538   2.215                                  STEPHANOS DEDALOS   \n",
       "592   1.805                                     HANS STIRS NOT   \n",
       "907   4.195   MADAME QUINSON BESIDES CAN ANSWER YOUR ENQUIRIES   \n",
       "115   4.470                  WHO IS HUMPY DUMPY ASKED THE MICE   \n",
       "371   2.440                          CONSEIL WAS MY MANSERVANT   \n",
       "\n",
       "                                                 texts      wers  \n",
       "839                        The captain shook his head.  0.000000  \n",
       "408  Nemo builds a fabulous futuristic submarine, t...  0.000000  \n",
       "405                     It's almost beyond conjecture.  0.000000  \n",
       "404  Thousands of handkerchiefs were waving above t...  0.000000  \n",
       "790  Brighter than early dawn's most brilliant dye ...  0.000000  \n",
       "..                                                 ...       ...  \n",
       "538                                   Stephenos dellos  1.000000  \n",
       "592                                      Honsters nod.  1.000000  \n",
       "907  Madam Quinsong, besides Cinanza, you're in que...  1.000000  \n",
       "115          Phew, he's on P, don't pee. Ask the mice.  1.142857  \n",
       "371                    Cos they were my man's servant.  1.500000  \n",
       "\n",
       "[1000 rows x 4 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# no cropping\n",
    "test_model('vq-2d-256c-cosine-padfix2.model')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f9c07fba",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:10&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 12.56%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_texts</th>\n",
       "      <th>texts</th>\n",
       "      <th>wers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>871</th>\n",
       "      <td>2.920</td>\n",
       "      <td>WHO BEGAN THE QUARREL WAS IT THE MORMONS</td>\n",
       "      <td>Who began the quarrel? Was it the Mormons?</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>938</th>\n",
       "      <td>12.435</td>\n",
       "      <td>HOW STRANGE IT SEEMED TO THE SAD WOMAN AS SHE ...</td>\n",
       "      <td>How strange it seemed to the sad woman, as she...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>937</th>\n",
       "      <td>12.605</td>\n",
       "      <td>HIS HOUSEKEEPER HAD THE MANAGEMENT OF EVERYTHI...</td>\n",
       "      <td>His housekeeper had the management of everythi...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>558</th>\n",
       "      <td>15.720</td>\n",
       "      <td>IT WAS STRANGE TOO THAT HE FOUND AN ARID PLEAS...</td>\n",
       "      <td>It was strange too, that he found an arid plea...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>305</th>\n",
       "      <td>3.835</td>\n",
       "      <td>THE HEAD OF THE PATCHWORK GIRL WAS THE MOST CU...</td>\n",
       "      <td>The head of the patchwork girl was the most cu...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stephenos dellos</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>907</th>\n",
       "      <td>4.195</td>\n",
       "      <td>MADAME QUINSON BESIDES CAN ANSWER YOUR ENQUIRIES</td>\n",
       "      <td>Madam Quinsong, besides Cenanza, you're in que...</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>2.020</td>\n",
       "      <td>SQUEAK SQUEAK</td>\n",
       "      <td>Quick, quick.</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>115</th>\n",
       "      <td>4.470</td>\n",
       "      <td>WHO IS HUMPY DUMPY ASKED THE MICE</td>\n",
       "      <td>P-E-S-A-P, don't be... asked the mice.</td>\n",
       "      <td>1.142857</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cos-A was my man's servant.</td>\n",
       "      <td>1.250000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows ￗ 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs                                           gt_texts   \n",
       "871   2.920           WHO BEGAN THE QUARREL WAS IT THE MORMONS  \\\n",
       "938  12.435  HOW STRANGE IT SEEMED TO THE SAD WOMAN AS SHE ...   \n",
       "937  12.605  HIS HOUSEKEEPER HAD THE MANAGEMENT OF EVERYTHI...   \n",
       "558  15.720  IT WAS STRANGE TOO THAT HE FOUND AN ARID PLEAS...   \n",
       "305   3.835  THE HEAD OF THE PATCHWORK GIRL WAS THE MOST CU...   \n",
       "..      ...                                                ...   \n",
       "538   2.215                                  STEPHANOS DEDALOS   \n",
       "907   4.195   MADAME QUINSON BESIDES CAN ANSWER YOUR ENQUIRIES   \n",
       "106   2.020                                      SQUEAK SQUEAK   \n",
       "115   4.470                  WHO IS HUMPY DUMPY ASKED THE MICE   \n",
       "371   2.440                          CONSEIL WAS MY MANSERVANT   \n",
       "\n",
       "                                                 texts      wers  \n",
       "871         Who began the quarrel? Was it the Mormons?  0.000000  \n",
       "938  How strange it seemed to the sad woman, as she...  0.000000  \n",
       "937  His housekeeper had the management of everythi...  0.000000  \n",
       "558  It was strange too, that he found an arid plea...  0.000000  \n",
       "305  The head of the patchwork girl was the most cu...  0.000000  \n",
       "..                                                 ...       ...  \n",
       "538                                   Stephenos dellos  1.000000  \n",
       "907  Madam Quinsong, besides Cenanza, you're in que...  1.000000  \n",
       "106                                      Quick, quick.  1.000000  \n",
       "115             P-E-S-A-P, don't be... asked the mice.  1.142857  \n",
       "371                        Cos-A was my man's servant.  1.250000  \n",
       "\n",
       "[1000 rows x 4 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# crop to 200 toks minimum\n",
    "test_model('vq-2d-256c-cosine-padfix2.model')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d9d326b9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:09&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 9.89%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_texts</th>\n",
       "      <th>texts</th>\n",
       "      <th>wers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>570</th>\n",
       "      <td>2.715</td>\n",
       "      <td>BEWARE OF MAKING THAT MISTAKE</td>\n",
       "      <td>Beware of making that mistake.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260</th>\n",
       "      <td>3.155</td>\n",
       "      <td>WHO TAUGHT YOU TO SCRUB A FLOOR I SHOULD LIKE ...</td>\n",
       "      <td>Who taught you to scrub a floor? I should like...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>800</th>\n",
       "      <td>5.770</td>\n",
       "      <td>OLD DANCES ARE SIMPLIFIED OF THEIR YEARNING BL...</td>\n",
       "      <td>Old dances are simplified of their yearning, b...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>258</th>\n",
       "      <td>2.260</td>\n",
       "      <td>SPINNING INDEED</td>\n",
       "      <td>Spinning Indeed.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>653</th>\n",
       "      <td>3.815</td>\n",
       "      <td>AND I DECLARE IT'S TOO BAD THAT IT IS</td>\n",
       "      <td>And I declare it's too bad that it is.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>934</th>\n",
       "      <td>4.205</td>\n",
       "      <td>I RESIDE IN THE MARAIS RUE DE DOUZE PORTES</td>\n",
       "      <td>Iries I'd in the Marfra Grudetus port.</td>\n",
       "      <td>0.777778</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>115</th>\n",
       "      <td>4.470</td>\n",
       "      <td>WHO IS HUMPY DUMPY ASKED THE MICE</td>\n",
       "      <td>Who is a P-Don't Be? Ask the mice.</td>\n",
       "      <td>0.857143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>448</th>\n",
       "      <td>2.215</td>\n",
       "      <td>WHO TOUCHES ME AM I IN BED</td>\n",
       "      <td>Potatys me, and my embed.</td>\n",
       "      <td>0.857143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>1.805</td>\n",
       "      <td>HANS STIRS NOT</td>\n",
       "      <td>Han Stersnide</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefanos de los</td>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows ￗ 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      secs                                           gt_texts   \n",
       "570  2.715                      BEWARE OF MAKING THAT MISTAKE  \\\n",
       "260  3.155  WHO TAUGHT YOU TO SCRUB A FLOOR I SHOULD LIKE ...   \n",
       "800  5.770  OLD DANCES ARE SIMPLIFIED OF THEIR YEARNING BL...   \n",
       "258  2.260                                    SPINNING INDEED   \n",
       "653  3.815              AND I DECLARE IT'S TOO BAD THAT IT IS   \n",
       "..     ...                                                ...   \n",
       "934  4.205         I RESIDE IN THE MARAIS RUE DE DOUZE PORTES   \n",
       "115  4.470                  WHO IS HUMPY DUMPY ASKED THE MICE   \n",
       "448  2.215                         WHO TOUCHES ME AM I IN BED   \n",
       "592  1.805                                     HANS STIRS NOT   \n",
       "538  2.215                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                 texts      wers  \n",
       "570                     Beware of making that mistake.  0.000000  \n",
       "260  Who taught you to scrub a floor? I should like...  0.000000  \n",
       "800  Old dances are simplified of their yearning, b...  0.000000  \n",
       "258                                   Spinning Indeed.  0.000000  \n",
       "653             And I declare it's too bad that it is.  0.000000  \n",
       "..                                                 ...       ...  \n",
       "934             Iries I'd in the Marfra Grudetus port.  0.777778  \n",
       "115                 Who is a P-Don't Be? Ask the mice.  0.857143  \n",
       "448                          Potatys me, and my embed.  0.857143  \n",
       "592                                      Han Stersnide  1.000000  \n",
       "538                                    Stefanos de los  1.500000  \n",
       "\n",
       "[1000 rows x 4 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# crop to audio length\n",
    "test_model('vq-2d-512c-cosine-padfix-premlp-learnpos.model')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6e14f67b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:09&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 9.51%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_texts</th>\n",
       "      <th>texts</th>\n",
       "      <th>wers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said, while on her lap...</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>607</th>\n",
       "      <td>7.040</td>\n",
       "      <td>SATURDAY AUGUST FIFTEENTH THE SEA UNBROKEN ALL...</td>\n",
       "      <td>Saturday, August 15th. The sea unbroken all ro...</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>608</th>\n",
       "      <td>3.070</td>\n",
       "      <td>THE HORIZON SEEMS EXTREMELY DISTANT</td>\n",
       "      <td>The horizon seems extremely distant.</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>615</th>\n",
       "      <td>3.735</td>\n",
       "      <td>THEREFORE DON'T TALK TO ME ABOUT VIEWS AND PRO...</td>\n",
       "      <td>Therefore, don't talk to me about views and pr...</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>616</th>\n",
       "      <td>5.795</td>\n",
       "      <td>I TAKE THIS AS MY ANSWER AND I LEAVE THE PROFE...</td>\n",
       "      <td>I take this as my answer and I leave the profe...</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>157</th>\n",
       "      <td>3.830</td>\n",
       "      <td>AND THEE WON'T GO WHY SHOULD I</td>\n",
       "      <td>And, see you all next time!</td>\n",
       "      <td>0.875</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>381</th>\n",
       "      <td>4.880</td>\n",
       "      <td>CONSEIL I CALLED A THIRD TIME CONSEIL APPEARED</td>\n",
       "      <td>Can say, at call the third time, can say appea...</td>\n",
       "      <td>0.875</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Caus￩ was my man's servant.</td>\n",
       "      <td>1.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefanos dellos.</td>\n",
       "      <td>1.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>2.020</td>\n",
       "      <td>SQUEAK SQUEAK</td>\n",
       "      <td>Sweet, sweet.</td>\n",
       "      <td>1.000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows ￗ 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      secs                                           gt_texts   \n",
       "0    8.230  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "607  7.040  SATURDAY AUGUST FIFTEENTH THE SEA UNBROKEN ALL...   \n",
       "608  3.070                THE HORIZON SEEMS EXTREMELY DISTANT   \n",
       "615  3.735  THEREFORE DON'T TALK TO ME ABOUT VIEWS AND PRO...   \n",
       "616  5.795  I TAKE THIS AS MY ANSWER AND I LEAVE THE PROFE...   \n",
       "..     ...                                                ...   \n",
       "157  3.830                     AND THEE WON'T GO WHY SHOULD I   \n",
       "381  4.880     CONSEIL I CALLED A THIRD TIME CONSEIL APPEARED   \n",
       "371  2.440                          CONSEIL WAS MY MANSERVANT   \n",
       "538  2.215                                  STEPHANOS DEDALOS   \n",
       "106  2.020                                      SQUEAK SQUEAK   \n",
       "\n",
       "                                                 texts   wers  \n",
       "0    And often has my mother said, while on her lap...  0.000  \n",
       "607  Saturday, August 15th. The sea unbroken all ro...  0.000  \n",
       "608               The horizon seems extremely distant.  0.000  \n",
       "615  Therefore, don't talk to me about views and pr...  0.000  \n",
       "616  I take this as my answer and I leave the profe...  0.000  \n",
       "..                                                 ...    ...  \n",
       "157                        And, see you all next time!  0.875  \n",
       "381  Can say, at call the third time, can say appea...  0.875  \n",
       "371                        Causé was my man's servant.  1.000  \n",
       "538                                   Stefanos dellos.  1.000  \n",
       "106                                      Sweet, sweet.  1.000  \n",
       "\n",
       "[1000 rows x 4 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# crop to audio length\n",
    "test_model('vq-2d-512c-cosine-padfix-premlp-learnpos-5e.model')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a1eafff0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:08&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 9.84%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>310</th>\n",
       "      <td>4.040</td>\n",
       "      <td>SHE POURED INTO THE DISH A QUANTITY FROM EACH ...</td>\n",
       "      <td>She poured into the dish a quantity from each ...</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>387</th>\n",
       "      <td>2.735</td>\n",
       "      <td>A ROUTE SLIGHTLY LESS DIRECT THAT'S ALL</td>\n",
       "      <td>a route slightly less direct, that's all.</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>385</th>\n",
       "      <td>4.530</td>\n",
       "      <td>ANYHOW WE'LL LEAVE INSTRUCTIONS TO SHIP THE WH...</td>\n",
       "      <td>Anyhow, we'll leave instructions to ship the w...</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>742</th>\n",
       "      <td>4.730</td>\n",
       "      <td>WE SAT WITH THE OFFICERS SOME LITTLE TIME AFTE...</td>\n",
       "      <td>We sat with the officers some little time afte...</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>383</th>\n",
       "      <td>9.300</td>\n",
       "      <td>PACK AS MUCH INTO MY TRUNK AS YOU CAN MY TRAVE...</td>\n",
       "      <td>Pack as much into my trunk as you can. My trav...</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>559</th>\n",
       "      <td>13.895</td>\n",
       "      <td>THE SENTENCE OF SAINT JAMES WHICH SAYS THAT HE...</td>\n",
       "      <td>Thank you.</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>775</th>\n",
       "      <td>5.545</td>\n",
       "      <td>THE PECULIAR CIRCUMSTANCES OF THE COLONY ARE W...</td>\n",
       "      <td>Thank you.</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>2.020</td>\n",
       "      <td>SQUEAK SQUEAK</td>\n",
       "      <td>Quick, quick.</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stephanos de los</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>491</th>\n",
       "      <td>4.805</td>\n",
       "      <td>THE PARLIAMENT AND THE SCOTS LAID THEIR PROPOS...</td>\n",
       "      <td>Thank you.</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs                                            gt_text   \n",
       "310   4.040  SHE POURED INTO THE DISH A QUANTITY FROM EACH ...  \\\n",
       "387   2.735            A ROUTE SLIGHTLY LESS DIRECT THAT'S ALL   \n",
       "385   4.530  ANYHOW WE'LL LEAVE INSTRUCTIONS TO SHIP THE WH...   \n",
       "742   4.730  WE SAT WITH THE OFFICERS SOME LITTLE TIME AFTE...   \n",
       "383   9.300  PACK AS MUCH INTO MY TRUNK AS YOU CAN MY TRAVE...   \n",
       "..      ...                                                ...   \n",
       "559  13.895  THE SENTENCE OF SAINT JAMES WHICH SAYS THAT HE...   \n",
       "775   5.545  THE PECULIAR CIRCUMSTANCES OF THE COLONY ARE W...   \n",
       "106   2.020                                      SQUEAK SQUEAK   \n",
       "538   2.215                                  STEPHANOS DEDALOS   \n",
       "491   4.805  THE PARLIAMENT AND THE SCOTS LAID THEIR PROPOS...   \n",
       "\n",
       "                                                  text  wer  \n",
       "310  She poured into the dish a quantity from each ...  0.0  \n",
       "387          a route slightly less direct, that's all.  0.0  \n",
       "385  Anyhow, we'll leave instructions to ship the w...  0.0  \n",
       "742  We sat with the officers some little time afte...  0.0  \n",
       "383  Pack as much into my trunk as you can. My trav...  0.0  \n",
       "..                                                 ...  ...  \n",
       "559                                         Thank you.  1.0  \n",
       "775                                         Thank you.  1.0  \n",
       "106                                      Quick, quick.  1.0  \n",
       "538                                   Stephanos de los  1.0  \n",
       "491                                         Thank you.  1.0  \n",
       "\n",
       "[1000 rows x 4 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# crop to audio length\n",
    "test_model('vq-2d-512c-cosine32-padfix-premlp-learnpos-5e.model')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "96cb4c4d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:41&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 7.51%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>862</th>\n",
       "      <td>6.720</td>\n",
       "      <td>TO THE FERVENT LATTER DAY SAINT A TEMPLE IS NO...</td>\n",
       "      <td>To the fervent Latter-day Saint, a temple is n...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>436</th>\n",
       "      <td>6.380</td>\n",
       "      <td>SHE WAS A LARGE HOMELY WOMAN THEY WERE COMMON ...</td>\n",
       "      <td>She was a large, homely woman. They were commo...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>437</th>\n",
       "      <td>5.425</td>\n",
       "      <td>SUBSTANTIALLY THIS WAS JACOB'S UNVARNISHED DES...</td>\n",
       "      <td>Substantially, this was Jacob's unvarnished de...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>438</th>\n",
       "      <td>6.665</td>\n",
       "      <td>AS TO HIS AGE AND ALSO THE NAME OF HIS MASTER ...</td>\n",
       "      <td>As to his age and also the name of his master,...</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>439</th>\n",
       "      <td>3.020</td>\n",
       "      <td>OF STARTING I DIDN'T KNOW THE WAY TO COME</td>\n",
       "      <td>of starting. I didn't know the way to come.</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>480</th>\n",
       "      <td>12.510</td>\n",
       "      <td>THIS WAS DONE FOR THE EVENT TOOK PLACE AT A TI...</td>\n",
       "      <td>This was done for the event took place.</td>\n",
       "      <td>0.783784</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>713</th>\n",
       "      <td>17.945</td>\n",
       "      <td>THE MOTHER AS SOON AS THE CHAISE IS SO FAR TUR...</td>\n",
       "      <td>The Mother. As soon as the chase</td>\n",
       "      <td>0.869565</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>454</th>\n",
       "      <td>7.720</td>\n",
       "      <td>AMONG OTHER THINGS ON WHICH SHE CAST HER EYES ...</td>\n",
       "      <td>Among other things...</td>\n",
       "      <td>0.869565</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cossay was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano Staedt-Los</td>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs                                            gt_text   \n",
       "862   6.720  TO THE FERVENT LATTER DAY SAINT A TEMPLE IS NO...  \\\n",
       "436   6.380  SHE WAS A LARGE HOMELY WOMAN THEY WERE COMMON ...   \n",
       "437   5.425  SUBSTANTIALLY THIS WAS JACOB'S UNVARNISHED DES...   \n",
       "438   6.665  AS TO HIS AGE AND ALSO THE NAME OF HIS MASTER ...   \n",
       "439   3.020          OF STARTING I DIDN'T KNOW THE WAY TO COME   \n",
       "..      ...                                                ...   \n",
       "480  12.510  THIS WAS DONE FOR THE EVENT TOOK PLACE AT A TI...   \n",
       "713  17.945  THE MOTHER AS SOON AS THE CHAISE IS SO FAR TUR...   \n",
       "454   7.720  AMONG OTHER THINGS ON WHICH SHE CAST HER EYES ...   \n",
       "371   2.440                          CONSEIL WAS MY MANSERVANT   \n",
       "538   2.215                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text       wer  \n",
       "862  To the fervent Latter-day Saint, a temple is n...  0.000000  \n",
       "436  She was a large, homely woman. They were commo...  0.000000  \n",
       "437  Substantially, this was Jacob's unvarnished de...  0.000000  \n",
       "438  As to his age and also the name of his master,...  0.000000  \n",
       "439        of starting. I didn't know the way to come.  0.000000  \n",
       "..                                                 ...       ...  \n",
       "480            This was done for the event took place.  0.783784  \n",
       "713                   The Mother. As soon as the chase  0.869565  \n",
       "454                              Among other things...  0.869565  \n",
       "371                       Cossay was my man's servant.  1.000000  \n",
       "538                                 Stefano Staedt-Los  1.500000  \n",
       "\n",
       "[1000 rows x 4 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vq-base.en-2d-4096c-cosine32-padfix-premlp-learnpos-5e.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "735dc0db",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:33&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 7.49%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>714</th>\n",
       "      <td>8.010</td>\n",
       "      <td>None</td>\n",
       "      <td>SO YOU WILL BE A GOOD GIRL I KNOW AND NOT MAKE...</td>\n",
       "      <td>So you will be a good girl, I know, and not ma...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>365</th>\n",
       "      <td>5.780</td>\n",
       "      <td>None</td>\n",
       "      <td>I WILL SHOW YOU WHAT A GOOD JOB I DID AND SHE ...</td>\n",
       "      <td>I will show you what a good job I did, and she...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>608</th>\n",
       "      <td>3.070</td>\n",
       "      <td>None</td>\n",
       "      <td>THE HORIZON SEEMS EXTREMELY DISTANT</td>\n",
       "      <td>The horizon seems extremely distant.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>5.335</td>\n",
       "      <td>None</td>\n",
       "      <td>SOMETIMES IT IS CALLED A CRAZY QUILT BECAUSE T...</td>\n",
       "      <td>Sometimes it is called a crazy quilt because t...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>361</th>\n",
       "      <td>6.045</td>\n",
       "      <td>None</td>\n",
       "      <td>A BED QUILT MADE OF PATCHES OF DIFFERENT KINDS...</td>\n",
       "      <td>A bed quilt made of patches of different kinds...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>480</th>\n",
       "      <td>12.510</td>\n",
       "      <td>None</td>\n",
       "      <td>THIS WAS DONE FOR THE EVENT TOOK PLACE AT A TI...</td>\n",
       "      <td>This was done for the event took place.</td>\n",
       "      <td>0.783784</td>\n",
       "      <td>0.783784</td>\n",
       "      <td>0.783784</td>\n",
       "      <td>0.216216</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>454</th>\n",
       "      <td>7.720</td>\n",
       "      <td>None</td>\n",
       "      <td>AMONG OTHER THINGS ON WHICH SHE CAST HER EYES ...</td>\n",
       "      <td>Among other things...</td>\n",
       "      <td>0.869565</td>\n",
       "      <td>0.869565</td>\n",
       "      <td>0.869565</td>\n",
       "      <td>0.130435</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>713</th>\n",
       "      <td>17.945</td>\n",
       "      <td>None</td>\n",
       "      <td>THE MOTHER AS SOON AS THE CHAISE IS SO FAR TUR...</td>\n",
       "      <td>The Mother. As soon as the chase</td>\n",
       "      <td>0.869565</td>\n",
       "      <td>0.869565</td>\n",
       "      <td>0.888199</td>\n",
       "      <td>0.111801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cossay was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano Staedt-Los</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "714   8.010  None  SO YOU WILL BE A GOOD GIRL I KNOW AND NOT MAKE...  \\\n",
       "365   5.780  None  I WILL SHOW YOU WHAT A GOOD JOB I DID AND SHE ...   \n",
       "608   3.070  None                THE HORIZON SEEMS EXTREMELY DISTANT   \n",
       "362   5.335  None  SOMETIMES IT IS CALLED A CRAZY QUILT BECAUSE T...   \n",
       "361   6.045  None  A BED QUILT MADE OF PATCHES OF DIFFERENT KINDS...   \n",
       "..      ...   ...                                                ...   \n",
       "480  12.510  None  THIS WAS DONE FOR THE EVENT TOOK PLACE AT A TI...   \n",
       "454   7.720  None  AMONG OTHER THINGS ON WHICH SHE CAST HER EYES ...   \n",
       "713  17.945  None  THE MOTHER AS SOON AS THE CHAISE IS SO FAR TUR...   \n",
       "371   2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "714  So you will be a good girl, I know, and not ma...  0.000000  0.000000  \\\n",
       "365  I will show you what a good job I did, and she...  0.000000  0.000000   \n",
       "608               The horizon seems extremely distant.  0.000000  0.000000   \n",
       "362  Sometimes it is called a crazy quilt because t...  0.000000  0.000000   \n",
       "361  A bed quilt made of patches of different kinds...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "480            This was done for the event took place.  0.783784  0.783784   \n",
       "454                              Among other things...  0.869565  0.869565   \n",
       "713                   The Mother. As soon as the chase  0.869565  0.869565   \n",
       "371                       Cossay was my man's servant.  1.000000  0.666667   \n",
       "538                                 Stefano Staedt-Los  1.500000  1.000000   \n",
       "\n",
       "          wil       wip  \n",
       "714  0.000000  1.000000  \n",
       "365  0.000000  1.000000  \n",
       "608  0.000000  1.000000  \n",
       "362  0.000000  1.000000  \n",
       "361  0.000000  1.000000  \n",
       "..        ...       ...  \n",
       "480  0.783784  0.216216  \n",
       "454  0.869565  0.130435  \n",
       "713  0.888199  0.111801  \n",
       "371  0.833333  0.166667  \n",
       "538  1.000000  0.000000  \n",
       "\n",
       "[1000 rows x 8 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vq-base.en-2d-4096c-cosine32-padfix-premlp-learnpos-5e.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "680cda0f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:31&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 10.44%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>669</th>\n",
       "      <td>8.540</td>\n",
       "      <td>None</td>\n",
       "      <td>AT THE FARTHER END OF THE LARGEST HALL A TABLE...</td>\n",
       "      <td>At the farther end of the largest hall, a tabl...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>349</th>\n",
       "      <td>2.130</td>\n",
       "      <td>None</td>\n",
       "      <td>THE WOMAN SEEMED THOUGHTFUL</td>\n",
       "      <td>The woman seemed thoughtful.</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>572</th>\n",
       "      <td>4.090</td>\n",
       "      <td>None</td>\n",
       "      <td>HE IS CALLED AS YOU KNOW THE APOSTLE OF THE IN...</td>\n",
       "      <td>He is called, as you know, the apostle of the ...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>347</th>\n",
       "      <td>3.665</td>\n",
       "      <td>None</td>\n",
       "      <td>OJO HAD NEVER EATEN SUCH A FINE MEAL IN ALL HI...</td>\n",
       "      <td>Ojo had never eaten such a fine meal in all hi...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>346</th>\n",
       "      <td>3.705</td>\n",
       "      <td>None</td>\n",
       "      <td>AND YOU MUST BE OJO THE UNLUCKY SHE ADDED</td>\n",
       "      <td>And you must be Ojo the unlucky,\" she added.</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>896</th>\n",
       "      <td>18.540</td>\n",
       "      <td>None</td>\n",
       "      <td>SILVIA WAS THE ADORATION OF FRANCE AND HER TAL...</td>\n",
       "      <td>Sylvia</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>689</th>\n",
       "      <td>5.995</td>\n",
       "      <td>None</td>\n",
       "      <td>DELLA HAD A YOUNG SISTER NAMED MARIA AND A COU...</td>\n",
       "      <td>Dela.</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>512</th>\n",
       "      <td>27.525</td>\n",
       "      <td>None</td>\n",
       "      <td>VALOR INDEED WAS VERY GENERALLY DIFFUSED OVER ...</td>\n",
       "      <td>Vala.</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>897</th>\n",
       "      <td>23.740</td>\n",
       "      <td>None</td>\n",
       "      <td>SILVIA DID NOT THINK THAT HER GOOD CONDUCT WAS...</td>\n",
       "      <td>Sylvia.</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano Staedt-Loss</td>\n",
       "      <td>1.5</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "669   8.540  None  AT THE FARTHER END OF THE LARGEST HALL A TABLE...  \\\n",
       "349   2.130  None                        THE WOMAN SEEMED THOUGHTFUL   \n",
       "572   4.090  None  HE IS CALLED AS YOU KNOW THE APOSTLE OF THE IN...   \n",
       "347   3.665  None  OJO HAD NEVER EATEN SUCH A FINE MEAL IN ALL HI...   \n",
       "346   3.705  None          AND YOU MUST BE OJO THE UNLUCKY SHE ADDED   \n",
       "..      ...   ...                                                ...   \n",
       "896  18.540  None  SILVIA WAS THE ADORATION OF FRANCE AND HER TAL...   \n",
       "689   5.995  None  DELLA HAD A YOUNG SISTER NAMED MARIA AND A COU...   \n",
       "512  27.525  None  VALOR INDEED WAS VERY GENERALLY DIFFUSED OVER ...   \n",
       "897  23.740  None  SILVIA DID NOT THINK THAT HER GOOD CONDUCT WAS...   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text  wer  mer  wil  wip  \n",
       "669  At the farther end of the largest hall, a tabl...  0.0  0.0  0.0  1.0  \n",
       "349                       The woman seemed thoughtful.  0.0  0.0  0.0  1.0  \n",
       "572  He is called, as you know, the apostle of the ...  0.0  0.0  0.0  1.0  \n",
       "347  Ojo had never eaten such a fine meal in all hi...  0.0  0.0  0.0  1.0  \n",
       "346       And you must be Ojo the unlucky,\" she added.  0.0  0.0  0.0  1.0  \n",
       "..                                                 ...  ...  ...  ...  ...  \n",
       "896                                             Sylvia  1.0  1.0  1.0  0.0  \n",
       "689                                              Dela.  1.0  1.0  1.0  0.0  \n",
       "512                                              Vala.  1.0  1.0  1.0  0.0  \n",
       "897                                            Sylvia.  1.0  1.0  1.0  0.0  \n",
       "538                                Stefano Staedt-Loss  1.5  1.0  1.0  0.0  \n",
       "\n",
       "[1000 rows x 8 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vq-base.en-2d-1024c-cosine32-padfix-premlp-learnpos-5e-cleaned.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a9ed190e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:45&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 6.64%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>None</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said, while on her lap...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>377</th>\n",
       "      <td>3.910</td>\n",
       "      <td>None</td>\n",
       "      <td>HE WENT HERE THERE AND EVERYWHERE IN PERFECT C...</td>\n",
       "      <td>He went here, there, and everywhere in perfect...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>376</th>\n",
       "      <td>8.340</td>\n",
       "      <td>None</td>\n",
       "      <td>NEVER DID HE OBJECT TO BUCKLING UP HIS SUITCAS...</td>\n",
       "      <td>Never did he object to buckling up his suitcas...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>687</th>\n",
       "      <td>8.500</td>\n",
       "      <td>None</td>\n",
       "      <td>IF YOU DRESSED IN SILK AND GOLD FROM TOP TO TO...</td>\n",
       "      <td>If you dressed in silk and gold from top to to...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>688</th>\n",
       "      <td>11.125</td>\n",
       "      <td>None</td>\n",
       "      <td>TO SUCH PERSONS THESE INDIRECT MODES OF TRAINI...</td>\n",
       "      <td>To such persons, these indirect modes of train...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>918</th>\n",
       "      <td>3.000</td>\n",
       "      <td>None</td>\n",
       "      <td>THAT IS TRUE BADAUDERIE</td>\n",
       "      <td>That is true bad-dulch-gree.</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.625000</td>\n",
       "      <td>0.375000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>25.640</td>\n",
       "      <td>None</td>\n",
       "      <td>A GOOD NEIGHBOUR OF THE BRONTES A CLEVER INTEL...</td>\n",
       "      <td>A good neighbor of the Bronte's, a clever, int...</td>\n",
       "      <td>0.797101</td>\n",
       "      <td>0.785714</td>\n",
       "      <td>0.836957</td>\n",
       "      <td>0.163043</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>221</th>\n",
       "      <td>15.060</td>\n",
       "      <td>None</td>\n",
       "      <td>IN THE SHOOTING OF SHERIFF JONES IN LAWRENCE A...</td>\n",
       "      <td>In the shooting of Sheriff's</td>\n",
       "      <td>0.857143</td>\n",
       "      <td>0.857143</td>\n",
       "      <td>0.880952</td>\n",
       "      <td>0.119048</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>879</th>\n",
       "      <td>17.840</td>\n",
       "      <td>None</td>\n",
       "      <td>THEY KNEW NO NORTH NO SOUTH NO EAST NO WEST TH...</td>\n",
       "      <td>They knew no North.</td>\n",
       "      <td>0.925926</td>\n",
       "      <td>0.925926</td>\n",
       "      <td>0.925926</td>\n",
       "      <td>0.074074</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano Staedalus.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "0     8.230  None  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "377   3.910  None  HE WENT HERE THERE AND EVERYWHERE IN PERFECT C...   \n",
       "376   8.340  None  NEVER DID HE OBJECT TO BUCKLING UP HIS SUITCAS...   \n",
       "687   8.500  None  IF YOU DRESSED IN SILK AND GOLD FROM TOP TO TO...   \n",
       "688  11.125  None  TO SUCH PERSONS THESE INDIRECT MODES OF TRAINI...   \n",
       "..      ...   ...                                                ...   \n",
       "918   3.000  None                            THAT IS TRUE BADAUDERIE   \n",
       "46   25.640  None  A GOOD NEIGHBOUR OF THE BRONTES A CLEVER INTEL...   \n",
       "221  15.060  None  IN THE SHOOTING OF SHERIFF JONES IN LAWRENCE A...   \n",
       "879  17.840  None  THEY KNEW NO NORTH NO SOUTH NO EAST NO WEST TH...   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "0    And often has my mother said, while on her lap...  0.000000  0.000000  \\\n",
       "377  He went here, there, and everywhere in perfect...  0.000000  0.000000   \n",
       "376  Never did he object to buckling up his suitcas...  0.000000  0.000000   \n",
       "687  If you dressed in silk and gold from top to to...  0.000000  0.000000   \n",
       "688  To such persons, these indirect modes of train...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "918                       That is true bad-dulch-gree.  0.750000  0.500000   \n",
       "46   A good neighbor of the Bronte's, a clever, int...  0.797101  0.785714   \n",
       "221                       In the shooting of Sheriff's  0.857143  0.857143   \n",
       "879                                They knew no North.  0.925926  0.925926   \n",
       "538                                 Stefano Staedalus.  1.000000  1.000000   \n",
       "\n",
       "          wil       wip  \n",
       "0    0.000000  1.000000  \n",
       "377  0.000000  1.000000  \n",
       "376  0.000000  1.000000  \n",
       "687  0.000000  1.000000  \n",
       "688  0.000000  1.000000  \n",
       "..        ...       ...  \n",
       "918  0.625000  0.375000  \n",
       "46   0.836957  0.163043  \n",
       "221  0.880952  0.119048  \n",
       "879  0.925926  0.074074  \n",
       "538  1.000000  0.000000  \n",
       "\n",
       "[1000 rows x 8 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vq-base.en-2d-4096c-cosine32-padfix-premlp-learnpos-5e-cleaned.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9411becd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: xlabel='secs', ylabel='wer'>"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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cGMTv0svvZSvfe1rbNiwAYAPfvCDLFu2jMcee6xx/Pbt2/mrv/qrxiZ+999//4w38TuXwY2iKIqiKOfGeRfczCYV3CiKoijK+ee82edGURRFURTlbFPBjaIoiqIo84oKbhRFURRFmVdUcKMoiqIoyryightFURRFUeYVFdwoiqIoijKvqOBGURRFUZR5RQU3iqIoiqLMKyq4URRFURRlXmlq4cxmqG/InM/nm9wSRVEURVFmqv65PZPCCgsuuCkUCgD09fU1uSWKoiiKorxdhUKBbDZ7ymMWXG2pKIp44403SKfTaJpGPp+nr6+P1157TdWamoLqn+mpvjk11T/TU30zPdU3p7aQ+0cIQaFQoLe3F10/9aqaBTdyo+s6S5YsecvjmUxmwd0ob4fqn+mpvjk11T/TU30zPdU3p7ZQ++d0IzZ1akGxoiiKoijzigpuFEVRFEWZVxZ8cOM4DnfffTeO4zS7KXOS6p/pqb45NdU/01N9Mz3VN6em+mdmFtyCYkVRFEVR5rcFP3KjKIqiKMr8ooIbRVEURVHmFRXcKIqiKIoyr6jgRlEURVGUeWXBBzePPPIIy5YtIxaLsWHDBn7xi180u0lzwj333IOmaZO+LrzwwmY3qyl+/OMf89GPfpTe3l40TeM//uM/Jj0vhOCLX/wiPT09xONxNm3axIsvvticxs6y0/XNH/3RH73lPrr66qub09hZtm3bNi677DLS6TSdnZ1cd911HDx4cNIxrutyyy230N7eTiqV4uMf/zjHjh1rUotn10z654Mf/OBb7p+bb765SS2ePV//+te55JJLGhv1bdy4kR/84AeN5xfyfTNTCzq4eeKJJ7j99tu5++672bt3L2vXrmXz5s0cP3682U2bE9797nczODjY+PrpT3/a7CY1RalUYu3atTzyyCNTPn///ffzta99jUcffZTdu3eTTCbZvHkzruvOcktn3+n6BuDqq6+edB9961vfmsUWNs/OnTu55ZZbePbZZ3nqqafwfZ+rrrqKUqnUOObP//zP+c///E+2b9/Ozp07eeONN7j++uub2OrZM5P+Abjpppsm3T/3339/k1o8e5YsWcJ9993Hc889x549e/jQhz7EtddeywsvvAAs7PtmxsQCtn79enHLLbc0/h2Goejt7RXbtm1rYqvmhrvvvlusXbu22c2YcwDx5JNPNv4dRZHo7u4WDzzwQOOx8fFx4TiO+Na3vtWEFjbPyX0jhBBbt24V1157bVPaM9ccP35cAGLnzp1CCHmfWJYltm/f3jjmN7/5jQDErl27mtXMpjm5f4QQ4oorrhB/9md/1rxGzSGtra3iG9/4hrpvZmjBjtx4nsdzzz3Hpk2bGo/pus6mTZvYtWtXE1s2d7z44ov09vayfPlyPvnJT3LkyJFmN2nOOXz4MENDQ5Puo2w2y4YNG9R9VPPMM8/Q2dnJqlWr+PSnP83IyEizm9QUuVwOgLa2NgCee+45fN+fdO9ceOGFLF26dEHeOyf3T903v/lNOjo6uPjii/nCF75AuVxuRvOaJgxDHn/8cUqlEhs3blT3zQwtuMKZdcPDw4RhSFdX16THu7q6+O1vf9ukVs0dGzZs4LHHHmPVqlUMDg5y77338oEPfIADBw6QTqeb3bw5Y2hoCGDK+6j+3EJ29dVXc/311zMwMMBLL73EX/7lX3LNNdewa9cuDMNodvNmTRRF3HbbbfzO7/wOF198MSDvHdu2aWlpmXTsQrx3puofgD/8wz+kv7+f3t5enn/+ef7iL/6CgwcP8u///u9NbO3s+NWvfsXGjRtxXZdUKsWTTz7J6tWr2b9/v7pvZmDBBjfKqV1zzTWN7y+55BI2bNhAf38/3/72t/mTP/mTJrZMOZ/8wR/8QeP7NWvWcMkll7BixQqeeeYZrrzyyia2bHbdcsstHDhwYMGuWzud6frnU5/6VOP7NWvW0NPTw5VXXslLL73EihUrZruZs2rVqlXs37+fXC7Hd77zHbZu3crOnTub3azzxoKdluro6MAwjLesMD927Bjd3d1NatXc1dLSwrve9S4OHTrU7KbMKfV7Rd1HM7N8+XI6OjoW1H1066238v3vf58f/ehHLFmypPF4d3c3nucxPj4+6fiFdu9M1z9T2bBhA8CCuH9s2+aCCy5g3bp1bNu2jbVr1/L3f//36r6ZoQUb3Ni2zbp169ixY0fjsSiK2LFjBxs3bmxiy+amYrHISy+9RE9PT7ObMqcMDAzQ3d096T7K5/Ps3r1b3UdTOHr0KCMjIwviPhJCcOutt/Lkk0/y9NNPMzAwMOn5devWYVnWpHvn4MGDHDlyZEHcO6frn6ns378fYEHcPyeLoohqtbrg75sZa/aK5mZ6/PHHheM44rHHHhO//vWvxac+9SnR0tIihoaGmt20pvvc5z4nnnnmGXH48GHxs5/9TGzatEl0dHSI48ePN7tps65QKIh9+/aJffv2CUB89atfFfv27ROvvvqqEEKI++67T7S0tIjvfve74vnnnxfXXnutGBgYEJVKpcktP/dO1TeFQkF8/vOfF7t27RKHDx8W//3f/y3e+973ipUrVwrXdZvd9HPu05/+tMhms+KZZ54Rg4ODja9yudw45uabbxZLly4VTz/9tNizZ4/YuHGj2LhxYxNbPXtO1z+HDh0Sf/3Xfy327NkjDh8+LL773e+K5cuXi8svv7zJLT/37rzzTrFz505x+PBh8fzzz4s777xTaJomfvjDHwohFvZ9M1MLOrgRQoiHHnpILF26VNi2LdavXy+effbZZjdpTrjhhhtET0+PsG1bLF68WNxwww3i0KFDzW5WU/zoRz8SwFu+tm7dKoSQ6eB33XWX6OrqEo7jiCuvvFIcPHiwuY2eJafqm3K5LK666iqxaNEiYVmW6O/vFzfddNOC+eNhqn4BxL/8y780jqlUKuIzn/mMaG1tFYlEQnzsYx8Tg4ODzWv0LDpd/xw5ckRcfvnloq2tTTiOIy644AJxxx13iFwu19yGz4I//uM/Fv39/cK2bbFo0SJx5ZVXNgIbIRb2fTNTmhBCzN44kaIoiqIoyrm1YNfcKIqiKIoyP6ngRlEURVGUeUUFN4qiKIqizCsquFEURVEUZV5RwY2iKIqiKPOKCm4URVEURZlXVHCjKIqiKMq8ooIbRVEURVHmFRXcKIqiKIoyr6jgRlEURVGUeUUFN4qiKIqizCsquFEUZc76zne+w5o1a4jH47S3t7Np0yZKpRIA3/jGN7jooouIxWJceOGF/MM//MOk1x49epQtW7bQ1tZGMpnkfe97H7t37wbgl7/8Jb/7u79LOp0mk8mwbt069uzZM+vXpyjKuWE2uwGKoihTGRwcZMuWLdx///187GMfo1Ao8JOf/AQhBN/85jf54he/yMMPP8x73vMe9u3bx0033UQymWTr1q0Ui0WuuOIKFi9ezPe+9z26u7vZu3cvURQB8MlPfpL3vOc9fP3rX8cwDPbv349lWU2+YkVRzhZVFVxRlDlp7969rFu3jldeeYX+/v5Jz11wwQX8zd/8DVu2bGk89rd/+7f813/9Fz//+c/5p3/6Jz7/+c/zyiuv0NbW9pZzZzIZHnroIbZu3XrOr0NRlNmnghtFUeakMAzZvHkzv/jFL9i8eTNXXXUVn/jEJ7Btm1QqRTweR9ffnFkPgoBsNsuxY8f4zGc+wwsvvMDOnTunPPc999zD3/3d33HFFVewadMmfv/3f58VK1bM1qUpinKOqTU3iqLMSYZh8NRTT/GDH/yA1atX89BDD7Fq1SoOHDgAwD//8z+zf//+xteBAwd49tlnAYjH46c89z333MMLL7zARz7yEZ5++mlWr17Nk08+ec6vSVGU2aFGbhRFOS+EYUh/fz+33347X/nKV7j55pu56667pjz2X//1X/nsZz/L4cOHp5yWOtmWLVsolUp873vfO9vNVhSlCdSCYkVR5qTdu3ezY8cOrrrqKjo7O9m9ezcnTpzgoosu4t577+Wzn/0s2WyWq6++mmq1yp49exgbG+P2229ny5YtfOlLX+K6665j27Zt9PT0sG/fPnp7e7n00ku54447+MQnPsHAwABHjx7lf/7nf/j4xz/e7EtWFOUsUcGNoihzUiaT4cc//jEPPvgg+Xye/v5+vvKVr3DNNdcAkEgkeOCBB7jjjjtIJpOsWbOG2267DQDbtvnhD3/I5z73OT784Q8TBAGrV6/mkUcewTAMRkZGuPHGGzl27BgdHR1cf/313HvvvU28WkVRziY1LaUoiqIoyryiFhQriqIoijKvqOBGURRFUZR5RQU3iqIoiqLMKyq4URRFURRlXlHBjaIoiqIo84oKbhRFURRFmVdUcKMoiqIoyryightFURRFUeYVFdwoiqIoijKvqOBGURRFUZR5RQU3iqIoiqLMK/8flrGGIdxfbO4AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_9.plot.scatter('secs', 'wer', alpha=.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "53e1d981",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:36&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 6.34%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>None</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said, while on her lap...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>696</th>\n",
       "      <td>18.415</td>\n",
       "      <td>None</td>\n",
       "      <td>FOR INSTANCE ONE DAY THE CHILDREN HAD BEEN PLA...</td>\n",
       "      <td>For instance, one day the children had been pl...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>370</th>\n",
       "      <td>2.340</td>\n",
       "      <td>None</td>\n",
       "      <td>BUT NOW NOTHING COULD HOLD ME BACK</td>\n",
       "      <td>But now nothing could hold me back.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>369</th>\n",
       "      <td>9.340</td>\n",
       "      <td>None</td>\n",
       "      <td>I WANTED NOTHING MORE THAN TO SEE MY COUNTRY A...</td>\n",
       "      <td>I wanted nothing more than to see my country a...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>368</th>\n",
       "      <td>6.190</td>\n",
       "      <td>None</td>\n",
       "      <td>EVEN SO I HAD JUST RETURNED FROM AN ARDUOUS JO...</td>\n",
       "      <td>Even so, I had just returned from an arduous j...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>820</th>\n",
       "      <td>2.155</td>\n",
       "      <td>None</td>\n",
       "      <td>THE FORMER BOOLOOROO GROANED</td>\n",
       "      <td>the former Boula-Ri-Growned.</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>0.600000</td>\n",
       "      <td>0.800000</td>\n",
       "      <td>0.200000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>843</th>\n",
       "      <td>2.110</td>\n",
       "      <td>None</td>\n",
       "      <td>FINE GLORIOUS</td>\n",
       "      <td>Find. Chlorious.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cossay was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>1.805</td>\n",
       "      <td>None</td>\n",
       "      <td>HANS STIRS NOT</td>\n",
       "      <td>Hon Stir's Night.</td>\n",
       "      <td>1.333333</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano Staedt-Loss</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "0     8.230  None  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "696  18.415  None  FOR INSTANCE ONE DAY THE CHILDREN HAD BEEN PLA...   \n",
       "370   2.340  None                 BUT NOW NOTHING COULD HOLD ME BACK   \n",
       "369   9.340  None  I WANTED NOTHING MORE THAN TO SEE MY COUNTRY A...   \n",
       "368   6.190  None  EVEN SO I HAD JUST RETURNED FROM AN ARDUOUS JO...   \n",
       "..      ...   ...                                                ...   \n",
       "820   2.155  None                       THE FORMER BOOLOOROO GROANED   \n",
       "843   2.110  None                                      FINE GLORIOUS   \n",
       "371   2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "592   1.805  None                                     HANS STIRS NOT   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "0    And often has my mother said, while on her lap...  0.000000  0.000000  \\\n",
       "696  For instance, one day the children had been pl...  0.000000  0.000000   \n",
       "370                But now nothing could hold me back.  0.000000  0.000000   \n",
       "369  I wanted nothing more than to see my country a...  0.000000  0.000000   \n",
       "368  Even so, I had just returned from an arduous j...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "820                       the former Boula-Ri-Growned.  0.750000  0.600000   \n",
       "843                                   Find. Chlorious.  1.000000  1.000000   \n",
       "371                       Cossay was my man's servant.  1.000000  0.666667   \n",
       "592                                  Hon Stir's Night.  1.333333  1.000000   \n",
       "538                                Stefano Staedt-Loss  1.500000  1.000000   \n",
       "\n",
       "          wil       wip  \n",
       "0    0.000000  1.000000  \n",
       "696  0.000000  1.000000  \n",
       "370  0.000000  1.000000  \n",
       "369  0.000000  1.000000  \n",
       "368  0.000000  1.000000  \n",
       "..        ...       ...  \n",
       "820  0.800000  0.200000  \n",
       "843  1.000000  0.000000  \n",
       "371  0.833333  0.166667  \n",
       "592  1.000000  0.000000  \n",
       "538  1.000000  0.000000  \n",
       "\n",
       "[1000 rows x 8 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vq-base.en-2d-4096c-cosine32-padfix-premlp-preconv-learnpos-5e-cleaned.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2fcc2b0d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:30&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 10.00%\n",
      "WER (w/o hallucinations): 10.00%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>696</th>\n",
       "      <td>18.415</td>\n",
       "      <td>None</td>\n",
       "      <td>FOR INSTANCE ONE DAY THE CHILDREN HAD BEEN PLA...</td>\n",
       "      <td>For instance, one day the children had been pl...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>594</th>\n",
       "      <td>4.865</td>\n",
       "      <td>None</td>\n",
       "      <td>I REFER TO THE THERMOMETER IT INDICATES THE FI...</td>\n",
       "      <td>I refer to the thermometer, it indicates the f...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>738</th>\n",
       "      <td>8.105</td>\n",
       "      <td>None</td>\n",
       "      <td>THEN THERE WERE THREE OR FOUR LEADING MEN OF T...</td>\n",
       "      <td>Then there were three or four leading men of t...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>355</th>\n",
       "      <td>2.885</td>\n",
       "      <td>None</td>\n",
       "      <td>I'M AFRAID I DON'T KNOW MUCH ABOUT THE LAND OF OZ</td>\n",
       "      <td>I'm afraid I don't know much about the land of...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>354</th>\n",
       "      <td>9.840</td>\n",
       "      <td>None</td>\n",
       "      <td>I THINK THE NEXT GLASS CAT THE MAGICIAN MAKES ...</td>\n",
       "      <td>I think the next glass cat the magician makes ...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>22.095</td>\n",
       "      <td>None</td>\n",
       "      <td>THIS MEANT THAT FOR AN ALLEGED MISDEMEANOR FOR...</td>\n",
       "      <td>This is the end of the video.</td>\n",
       "      <td>0.949153</td>\n",
       "      <td>0.949153</td>\n",
       "      <td>0.978208</td>\n",
       "      <td>0.021792</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cossay was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>85</th>\n",
       "      <td>2.610</td>\n",
       "      <td>None</td>\n",
       "      <td>THIS EVENING THEY ALL SAID</td>\n",
       "      <td>This is the end of the video.</td>\n",
       "      <td>1.200000</td>\n",
       "      <td>0.857143</td>\n",
       "      <td>0.971429</td>\n",
       "      <td>0.028571</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano Staedt-Loss</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>418</th>\n",
       "      <td>17.640</td>\n",
       "      <td>None</td>\n",
       "      <td>FOR MANY THEN THIS BOOK HAS BEEN A SOURCE OF F...</td>\n",
       "      <td>For many then, this is the end of the video. F...</td>\n",
       "      <td>2.923077</td>\n",
       "      <td>0.942149</td>\n",
       "      <td>0.989616</td>\n",
       "      <td>0.010384</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "696  18.415  None  FOR INSTANCE ONE DAY THE CHILDREN HAD BEEN PLA...  \\\n",
       "594   4.865  None  I REFER TO THE THERMOMETER IT INDICATES THE FI...   \n",
       "738   8.105  None  THEN THERE WERE THREE OR FOUR LEADING MEN OF T...   \n",
       "355   2.885  None  I'M AFRAID I DON'T KNOW MUCH ABOUT THE LAND OF OZ   \n",
       "354   9.840  None  I THINK THE NEXT GLASS CAT THE MAGICIAN MAKES ...   \n",
       "..      ...   ...                                                ...   \n",
       "886  22.095  None  THIS MEANT THAT FOR AN ALLEGED MISDEMEANOR FOR...   \n",
       "371   2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "85    2.610  None                         THIS EVENING THEY ALL SAID   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "418  17.640  None  FOR MANY THEN THIS BOOK HAS BEEN A SOURCE OF F...   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "696  For instance, one day the children had been pl...  0.000000  0.000000  \\\n",
       "594  I refer to the thermometer, it indicates the f...  0.000000  0.000000   \n",
       "738  Then there were three or four leading men of t...  0.000000  0.000000   \n",
       "355  I'm afraid I don't know much about the land of...  0.000000  0.000000   \n",
       "354  I think the next glass cat the magician makes ...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "886                      This is the end of the video.  0.949153  0.949153   \n",
       "371                       Cossay was my man's servant.  1.000000  0.666667   \n",
       "85                       This is the end of the video.  1.200000  0.857143   \n",
       "538                                Stefano Staedt-Loss  1.500000  1.000000   \n",
       "418  For many then, this is the end of the video. F...  2.923077  0.942149   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "696  0.000000  1.000000          False  \n",
       "594  0.000000  1.000000          False  \n",
       "738  0.000000  1.000000          False  \n",
       "355  0.000000  1.000000          False  \n",
       "354  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "886  0.978208  0.021792          False  \n",
       "371  0.833333  0.166667          False  \n",
       "85   0.971429  0.028571          False  \n",
       "538  1.000000  0.000000          False  \n",
       "418  0.989616  0.010384          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vq-base.en-2d-4096c-cosine32-padfix-premlp-premean-learnpos-5e-cleaned-repro.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6d38b29c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:28&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 7.82%\n",
      "WER (w/o hallucinations): 7.82%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>709</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>THE THREE MODES OF MANAGEMENT</td>\n",
       "      <td>the three modes of management.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>740</th>\n",
       "      <td>2.715</td>\n",
       "      <td>None</td>\n",
       "      <td>BUT I MEAN TO HAVE MY INNINGS BEFORE LONG</td>\n",
       "      <td>But I mean to have my innings before long.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>5.335</td>\n",
       "      <td>None</td>\n",
       "      <td>SOMETIMES IT IS CALLED A CRAZY QUILT BECAUSE T...</td>\n",
       "      <td>Sometimes it is called a crazy quilt because t...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>361</th>\n",
       "      <td>6.045</td>\n",
       "      <td>None</td>\n",
       "      <td>A BED QUILT MADE OF PATCHES OF DIFFERENT KINDS...</td>\n",
       "      <td>A bed quilt made of patches of different kinds...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>605</th>\n",
       "      <td>6.305</td>\n",
       "      <td>None</td>\n",
       "      <td>A SUFFOCATING SMELL OF NITROGEN FILLS THE AIR ...</td>\n",
       "      <td>A suffocating smell of nitrogen fills the air....</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>793</th>\n",
       "      <td>14.580</td>\n",
       "      <td>None</td>\n",
       "      <td>IN A SUNSET GLOWING OF CRIMSON AND GOLD SHE LI...</td>\n",
       "      <td>In a sunset</td>\n",
       "      <td>0.906250</td>\n",
       "      <td>0.906250</td>\n",
       "      <td>0.906250</td>\n",
       "      <td>0.093750</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>170</th>\n",
       "      <td>8.740</td>\n",
       "      <td>None</td>\n",
       "      <td>RUTH WAS GLAD TO HEAR THAT PHILIP HAD MADE A P...</td>\n",
       "      <td>Ruth was</td>\n",
       "      <td>0.931034</td>\n",
       "      <td>0.931034</td>\n",
       "      <td>0.931034</td>\n",
       "      <td>0.068966</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>818</th>\n",
       "      <td>9.870</td>\n",
       "      <td>None</td>\n",
       "      <td>I'LL GLADLY DO THAT PROMISED THE NEW BOOLOOROO...</td>\n",
       "      <td>I'll</td>\n",
       "      <td>0.933333</td>\n",
       "      <td>0.933333</td>\n",
       "      <td>0.933333</td>\n",
       "      <td>0.066667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cosse was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano Staedt-Loss</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "709   2.440  None                      THE THREE MODES OF MANAGEMENT  \\\n",
       "740   2.715  None          BUT I MEAN TO HAVE MY INNINGS BEFORE LONG   \n",
       "362   5.335  None  SOMETIMES IT IS CALLED A CRAZY QUILT BECAUSE T...   \n",
       "361   6.045  None  A BED QUILT MADE OF PATCHES OF DIFFERENT KINDS...   \n",
       "605   6.305  None  A SUFFOCATING SMELL OF NITROGEN FILLS THE AIR ...   \n",
       "..      ...   ...                                                ...   \n",
       "793  14.580  None  IN A SUNSET GLOWING OF CRIMSON AND GOLD SHE LI...   \n",
       "170   8.740  None  RUTH WAS GLAD TO HEAR THAT PHILIP HAD MADE A P...   \n",
       "818   9.870  None  I'LL GLADLY DO THAT PROMISED THE NEW BOOLOOROO...   \n",
       "371   2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "709                     the three modes of management.  0.000000  0.000000  \\\n",
       "740         But I mean to have my innings before long.  0.000000  0.000000   \n",
       "362  Sometimes it is called a crazy quilt because t...  0.000000  0.000000   \n",
       "361  A bed quilt made of patches of different kinds...  0.000000  0.000000   \n",
       "605  A suffocating smell of nitrogen fills the air....  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "793                                        In a sunset  0.906250  0.906250   \n",
       "170                                           Ruth was  0.931034  0.931034   \n",
       "818                                               I'll  0.933333  0.933333   \n",
       "371                        Cosse was my man's servant.  1.000000  0.666667   \n",
       "538                                Stefano Staedt-Loss  1.500000  1.000000   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "709  0.000000  1.000000          False  \n",
       "740  0.000000  1.000000          False  \n",
       "362  0.000000  1.000000          False  \n",
       "361  0.000000  1.000000          False  \n",
       "605  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "793  0.906250  0.093750          False  \n",
       "170  0.931034  0.068966          False  \n",
       "818  0.933333  0.066667          False  \n",
       "371  0.833333  0.166667          False  \n",
       "538  1.000000  0.000000          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vq-base.en-2d-4096c-cosine32-padfix-premlp-premean-learnpos-5e-cleaned-repro.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "409a9f41",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:36&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 7.23%\n",
      "WER (w/o hallucinations): 7.23%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>760</th>\n",
       "      <td>6.370</td>\n",
       "      <td>None</td>\n",
       "      <td>THERE CAME UPON ME A SUDDEN SHOCK WHEN I HEARD...</td>\n",
       "      <td>There came upon me a sudden shock when I heard...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>368</th>\n",
       "      <td>6.190</td>\n",
       "      <td>None</td>\n",
       "      <td>EVEN SO I HAD JUST RETURNED FROM AN ARDUOUS JO...</td>\n",
       "      <td>Even so, I had just returned from an arduous j...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>586</th>\n",
       "      <td>5.515</td>\n",
       "      <td>None</td>\n",
       "      <td>THERE'S A HEAVY STORM COMING ON I CRIED POINTI...</td>\n",
       "      <td>There's a heavy storm coming on, I cried, poin...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>366</th>\n",
       "      <td>3.615</td>\n",
       "      <td>None</td>\n",
       "      <td>CHAPTER THREE AS MASTER WISHES</td>\n",
       "      <td>Chapter 3 As Master Wishes</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>365</th>\n",
       "      <td>5.780</td>\n",
       "      <td>None</td>\n",
       "      <td>I WILL SHOW YOU WHAT A GOOD JOB I DID AND SHE ...</td>\n",
       "      <td>I will show you what a good job I did, and she...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>694</th>\n",
       "      <td>5.965</td>\n",
       "      <td>None</td>\n",
       "      <td>I EXPECT YOU HAVE BEEN A VERY GOOD GIRL ANDELL...</td>\n",
       "      <td>I</td>\n",
       "      <td>0.933333</td>\n",
       "      <td>0.933333</td>\n",
       "      <td>0.933333</td>\n",
       "      <td>0.066667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>881</th>\n",
       "      <td>13.950</td>\n",
       "      <td>None</td>\n",
       "      <td>WE BELIEVE IN A LITERAL RESURRECTION AND AN AC...</td>\n",
       "      <td>We believe that we are the most important ones.</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.944444</td>\n",
       "      <td>0.987654</td>\n",
       "      <td>0.012346</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>2.020</td>\n",
       "      <td>None</td>\n",
       "      <td>SQUEAK SQUEAK</td>\n",
       "      <td>Quick, quick!</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cossay was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano's dead loss.</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "760   6.370  None  THERE CAME UPON ME A SUDDEN SHOCK WHEN I HEARD...  \\\n",
       "368   6.190  None  EVEN SO I HAD JUST RETURNED FROM AN ARDUOUS JO...   \n",
       "586   5.515  None  THERE'S A HEAVY STORM COMING ON I CRIED POINTI...   \n",
       "366   3.615  None                     CHAPTER THREE AS MASTER WISHES   \n",
       "365   5.780  None  I WILL SHOW YOU WHAT A GOOD JOB I DID AND SHE ...   \n",
       "..      ...   ...                                                ...   \n",
       "694   5.965  None  I EXPECT YOU HAVE BEEN A VERY GOOD GIRL ANDELL...   \n",
       "881  13.950  None  WE BELIEVE IN A LITERAL RESURRECTION AND AN AC...   \n",
       "106   2.020  None                                      SQUEAK SQUEAK   \n",
       "371   2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "760  There came upon me a sudden shock when I heard...  0.000000  0.000000  \\\n",
       "368  Even so, I had just returned from an arduous j...  0.000000  0.000000   \n",
       "586  There's a heavy storm coming on, I cried, poin...  0.000000  0.000000   \n",
       "366                         Chapter 3 As Master Wishes  0.000000  0.000000   \n",
       "365  I will show you what a good job I did, and she...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "694                                                  I  0.933333  0.933333   \n",
       "881    We believe that we are the most important ones.  0.944444  0.944444   \n",
       "106                                      Quick, quick!  1.000000  1.000000   \n",
       "371                       Cossay was my man's servant.  1.000000  0.666667   \n",
       "538                               Stefano's dead loss.  2.000000  1.000000   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "760  0.000000  1.000000          False  \n",
       "368  0.000000  1.000000          False  \n",
       "586  0.000000  1.000000          False  \n",
       "366  0.000000  1.000000          False  \n",
       "365  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "694  0.933333  0.066667          False  \n",
       "881  0.987654  0.012346          False  \n",
       "106  1.000000  0.000000          False  \n",
       "371  0.833333  0.166667          False  \n",
       "538  1.000000  0.000000          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vq-base.en-2d-4096c-cosine32-padfix-premlp-premean-learnpos-5e-cleaned-repro-warm1000.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7b1342ea",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:35&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 6.47%\n",
      "WER (w/o hallucinations): 6.47%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>None</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said, while on her lap...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>702</th>\n",
       "      <td>14.175</td>\n",
       "      <td>None</td>\n",
       "      <td>AND THIS METHOD OF TREATING THE CASE WAS MUCH ...</td>\n",
       "      <td>And this method of treating the case was much ...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>703</th>\n",
       "      <td>4.775</td>\n",
       "      <td>None</td>\n",
       "      <td>NATURE OF THE EFFECT PRODUCED BY EARLY IMPRESS...</td>\n",
       "      <td>Nature of the Effect produced by Early Impress...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>377</th>\n",
       "      <td>3.910</td>\n",
       "      <td>None</td>\n",
       "      <td>HE WENT HERE THERE AND EVERYWHERE IN PERFECT C...</td>\n",
       "      <td>He went here, there, and everywhere in perfect...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>376</th>\n",
       "      <td>8.340</td>\n",
       "      <td>None</td>\n",
       "      <td>NEVER DID HE OBJECT TO BUCKLING UP HIS SUITCAS...</td>\n",
       "      <td>Never did he object to buckling up his suitcas...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cossé was my man's servant.</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>322</th>\n",
       "      <td>3.200</td>\n",
       "      <td>None</td>\n",
       "      <td>I NOW USE THEM AS ORNAMENTAL STATUARY IN MY GA...</td>\n",
       "      <td>and</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>652</th>\n",
       "      <td>3.475</td>\n",
       "      <td>None</td>\n",
       "      <td>I AM SO VERY TIRED OF BEING ALL ALONE HERE</td>\n",
       "      <td>and</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>555</th>\n",
       "      <td>5.815</td>\n",
       "      <td>None</td>\n",
       "      <td>BUT THE DUSK DEEPENING IN THE SCHOOLROOM COVER...</td>\n",
       "      <td>and</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Staphano's dead loss.</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "0     8.230  None  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "702  14.175  None  AND THIS METHOD OF TREATING THE CASE WAS MUCH ...   \n",
       "703   4.775  None  NATURE OF THE EFFECT PRODUCED BY EARLY IMPRESS...   \n",
       "377   3.910  None  HE WENT HERE THERE AND EVERYWHERE IN PERFECT C...   \n",
       "376   8.340  None  NEVER DID HE OBJECT TO BUCKLING UP HIS SUITCAS...   \n",
       "..      ...   ...                                                ...   \n",
       "371   2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "322   3.200  None  I NOW USE THEM AS ORNAMENTAL STATUARY IN MY GA...   \n",
       "652   3.475  None         I AM SO VERY TIRED OF BEING ALL ALONE HERE   \n",
       "555   5.815  None  BUT THE DUSK DEEPENING IN THE SCHOOLROOM COVER...   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text  wer       mer   \n",
       "0    And often has my mother said, while on her lap...  0.0  0.000000  \\\n",
       "702  And this method of treating the case was much ...  0.0  0.000000   \n",
       "703  Nature of the Effect produced by Early Impress...  0.0  0.000000   \n",
       "377  He went here, there, and everywhere in perfect...  0.0  0.000000   \n",
       "376  Never did he object to buckling up his suitcas...  0.0  0.000000   \n",
       "..                                                 ...  ...       ...   \n",
       "371                        Cossé was my man's servant.  1.0  0.666667   \n",
       "322                                                and  1.0  1.000000   \n",
       "652                                                and  1.0  1.000000   \n",
       "555                                                and  1.0  1.000000   \n",
       "538                              Staphano's dead loss.  2.0  1.000000   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "0    0.000000  1.000000          False  \n",
       "702  0.000000  1.000000          False  \n",
       "703  0.000000  1.000000          False  \n",
       "377  0.000000  1.000000          False  \n",
       "376  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "371  0.833333  0.166667          False  \n",
       "322  1.000000  0.000000          False  \n",
       "652  1.000000  0.000000          False  \n",
       "555  1.000000  0.000000          False  \n",
       "538  1.000000  0.000000          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vq-base.en-2d-4096c-cosine32-padfix-premlp-premean-learnpos-5e-cleaned-repro-warm1000-2.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "33bc74cd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:33&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 5.93%\n",
      "WER (w/o hallucinations): 5.93%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>781</th>\n",
       "      <td>3.050</td>\n",
       "      <td>None</td>\n",
       "      <td>WHEN DO YOU INTEND THAT THE JOHN BRIGHT SHALL ...</td>\n",
       "      <td>When do you intend that the John Bright shall ...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>388</th>\n",
       "      <td>2.355</td>\n",
       "      <td>None</td>\n",
       "      <td>WE'RE LEAVING ON THE ABRAHAM LINCOLN</td>\n",
       "      <td>We're leaving on the Abraham Lincoln.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>387</th>\n",
       "      <td>2.735</td>\n",
       "      <td>None</td>\n",
       "      <td>A ROUTE SLIGHTLY LESS DIRECT THAT'S ALL</td>\n",
       "      <td>a route slightly less direct. That's all.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>386</th>\n",
       "      <td>5.915</td>\n",
       "      <td>None</td>\n",
       "      <td>YES WE ARE CERTAINLY I REPLIED EVASIVELY BUT A...</td>\n",
       "      <td>Yes, we are. Certainly, I replied evasively, b...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>385</th>\n",
       "      <td>4.530</td>\n",
       "      <td>None</td>\n",
       "      <td>ANYHOW WE'LL LEAVE INSTRUCTIONS TO SHIP THE WH...</td>\n",
       "      <td>Anyhow, we'll leave instructions to ship the w...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>524</th>\n",
       "      <td>3.195</td>\n",
       "      <td>None</td>\n",
       "      <td>BROTHER MAC ARDLE BROTHER KEOGH</td>\n",
       "      <td>Brother McCarle, Brother Kioff.</td>\n",
       "      <td>0.600000</td>\n",
       "      <td>0.600000</td>\n",
       "      <td>0.800000</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>1.805</td>\n",
       "      <td>None</td>\n",
       "      <td>HANS STIRS NOT</td>\n",
       "      <td>Hans-Stirrsnacht.</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>766</th>\n",
       "      <td>2.540</td>\n",
       "      <td>None</td>\n",
       "      <td>YOU PROPOSE TO KIDNAP ME I SAID</td>\n",
       "      <td>You proposed a kenatmi set.</td>\n",
       "      <td>0.857143</td>\n",
       "      <td>0.857143</td>\n",
       "      <td>0.971429</td>\n",
       "      <td>0.028571</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Steffano Staedalus</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cossay was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      secs   idx                                            gt_text   \n",
       "781  3.050  None  WHEN DO YOU INTEND THAT THE JOHN BRIGHT SHALL ...  \\\n",
       "388  2.355  None               WE'RE LEAVING ON THE ABRAHAM LINCOLN   \n",
       "387  2.735  None            A ROUTE SLIGHTLY LESS DIRECT THAT'S ALL   \n",
       "386  5.915  None  YES WE ARE CERTAINLY I REPLIED EVASIVELY BUT A...   \n",
       "385  4.530  None  ANYHOW WE'LL LEAVE INSTRUCTIONS TO SHIP THE WH...   \n",
       "..     ...   ...                                                ...   \n",
       "524  3.195  None                    BROTHER MAC ARDLE BROTHER KEOGH   \n",
       "592  1.805  None                                     HANS STIRS NOT   \n",
       "766  2.540  None                    YOU PROPOSE TO KIDNAP ME I SAID   \n",
       "538  2.215  None                                  STEPHANOS DEDALOS   \n",
       "371  2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "781  When do you intend that the John Bright shall ...  0.000000  0.000000  \\\n",
       "388              We're leaving on the Abraham Lincoln.  0.000000  0.000000   \n",
       "387          a route slightly less direct. That's all.  0.000000  0.000000   \n",
       "386  Yes, we are. Certainly, I replied evasively, b...  0.000000  0.000000   \n",
       "385  Anyhow, we'll leave instructions to ship the w...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "524                    Brother McCarle, Brother Kioff.  0.600000  0.600000   \n",
       "592                                  Hans-Stirrsnacht.  0.666667  0.666667   \n",
       "766                        You proposed a kenatmi set.  0.857143  0.857143   \n",
       "538                                 Steffano Staedalus  1.000000  1.000000   \n",
       "371                       Cossay was my man's servant.  1.000000  0.666667   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "781  0.000000  1.000000          False  \n",
       "388  0.000000  1.000000          False  \n",
       "387  0.000000  1.000000          False  \n",
       "386  0.000000  1.000000          False  \n",
       "385  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "524  0.800000  0.200000          False  \n",
       "592  0.833333  0.166667          False  \n",
       "766  0.971429  0.028571          False  \n",
       "538  1.000000  0.000000          False  \n",
       "371  0.833333  0.166667          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vq-base.en-2d-4096c-cosine32-padfix-premlp-premean-learnpos-5e-cleaned.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "36758c89",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 1.5)"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = _14.plot.scatter('secs', 'wer', alpha=.2)\n",
    "ax.set_ylim(0, 1.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "301e5798",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:30&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 9.34%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>646</th>\n",
       "      <td>3.385</td>\n",
       "      <td>None</td>\n",
       "      <td>I ALMOST THINK I CAN REMEMBER FEELING A LITTLE...</td>\n",
       "      <td>I almost think I can remember feeling a little...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>862</th>\n",
       "      <td>6.720</td>\n",
       "      <td>None</td>\n",
       "      <td>TO THE FERVENT LATTER DAY SAINT A TEMPLE IS NO...</td>\n",
       "      <td>To the fervent Latter-day Saint, a temple is n...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>370</th>\n",
       "      <td>2.340</td>\n",
       "      <td>None</td>\n",
       "      <td>BUT NOW NOTHING COULD HOLD ME BACK</td>\n",
       "      <td>But now nothing could hold me back.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>369</th>\n",
       "      <td>9.340</td>\n",
       "      <td>None</td>\n",
       "      <td>I WANTED NOTHING MORE THAN TO SEE MY COUNTRY A...</td>\n",
       "      <td>I wanted nothing more than to see my country a...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>368</th>\n",
       "      <td>6.190</td>\n",
       "      <td>None</td>\n",
       "      <td>EVEN SO I HAD JUST RETURNED FROM AN ARDUOUS JO...</td>\n",
       "      <td>Even so, I had just returned from an arduous j...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>61</th>\n",
       "      <td>10.250</td>\n",
       "      <td>None</td>\n",
       "      <td>IN WINTER WHEN THE SNOW LAY GLITTERING ON THE ...</td>\n",
       "      <td>In winter, when the snow lay glittering on the...</td>\n",
       "      <td>1.791667</td>\n",
       "      <td>0.651515</td>\n",
       "      <td>0.666035</td>\n",
       "      <td>0.333965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>468</th>\n",
       "      <td>12.250</td>\n",
       "      <td>None</td>\n",
       "      <td>I HAVE GREAT THINGS TO TELL YOU SENOR SAID DON...</td>\n",
       "      <td>I have great things to tell you, Senor, sadona...</td>\n",
       "      <td>1.861111</td>\n",
       "      <td>0.676768</td>\n",
       "      <td>0.712682</td>\n",
       "      <td>0.287318</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>558</th>\n",
       "      <td>15.720</td>\n",
       "      <td>None</td>\n",
       "      <td>IT WAS STRANGE TOO THAT HE FOUND AN ARID PLEAS...</td>\n",
       "      <td>It was strange, too, that he found an arid ple...</td>\n",
       "      <td>2.317073</td>\n",
       "      <td>0.698529</td>\n",
       "      <td>0.698529</td>\n",
       "      <td>0.301471</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>770</th>\n",
       "      <td>13.960</td>\n",
       "      <td>None</td>\n",
       "      <td>WHAT WORLD WIDE INIQUITY SUCH A SPEECH AS THAT...</td>\n",
       "      <td>What worldwide iniquity such a speech as that ...</td>\n",
       "      <td>2.375000</td>\n",
       "      <td>0.719697</td>\n",
       "      <td>0.738740</td>\n",
       "      <td>0.261260</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>444</th>\n",
       "      <td>12.475</td>\n",
       "      <td>None</td>\n",
       "      <td>THEY DREW THEIR SWORDS HID THEIR FACES IN THE ...</td>\n",
       "      <td>They drew their swords, hid their faces in the...</td>\n",
       "      <td>4.200000</td>\n",
       "      <td>0.807692</td>\n",
       "      <td>0.807692</td>\n",
       "      <td>0.192308</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "646   3.385  None  I ALMOST THINK I CAN REMEMBER FEELING A LITTLE...  \\\n",
       "862   6.720  None  TO THE FERVENT LATTER DAY SAINT A TEMPLE IS NO...   \n",
       "370   2.340  None                 BUT NOW NOTHING COULD HOLD ME BACK   \n",
       "369   9.340  None  I WANTED NOTHING MORE THAN TO SEE MY COUNTRY A...   \n",
       "368   6.190  None  EVEN SO I HAD JUST RETURNED FROM AN ARDUOUS JO...   \n",
       "..      ...   ...                                                ...   \n",
       "61   10.250  None  IN WINTER WHEN THE SNOW LAY GLITTERING ON THE ...   \n",
       "468  12.250  None  I HAVE GREAT THINGS TO TELL YOU SENOR SAID DON...   \n",
       "558  15.720  None  IT WAS STRANGE TOO THAT HE FOUND AN ARID PLEAS...   \n",
       "770  13.960  None  WHAT WORLD WIDE INIQUITY SUCH A SPEECH AS THAT...   \n",
       "444  12.475  None  THEY DREW THEIR SWORDS HID THEIR FACES IN THE ...   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "646  I almost think I can remember feeling a little...  0.000000  0.000000  \\\n",
       "862  To the fervent Latter-day Saint, a temple is n...  0.000000  0.000000   \n",
       "370                But now nothing could hold me back.  0.000000  0.000000   \n",
       "369  I wanted nothing more than to see my country a...  0.000000  0.000000   \n",
       "368  Even so, I had just returned from an arduous j...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "61   In winter, when the snow lay glittering on the...  1.791667  0.651515   \n",
       "468  I have great things to tell you, Senor, sadona...  1.861111  0.676768   \n",
       "558  It was strange, too, that he found an arid ple...  2.317073  0.698529   \n",
       "770  What worldwide iniquity such a speech as that ...  2.375000  0.719697   \n",
       "444  They drew their swords, hid their faces in the...  4.200000  0.807692   \n",
       "\n",
       "          wil       wip  \n",
       "646  0.000000  1.000000  \n",
       "862  0.000000  1.000000  \n",
       "370  0.000000  1.000000  \n",
       "369  0.000000  1.000000  \n",
       "368  0.000000  1.000000  \n",
       "..        ...       ...  \n",
       "61   0.666035  0.333965  \n",
       "468  0.712682  0.287318  \n",
       "558  0.698529  0.301471  \n",
       "770  0.738740  0.261260  \n",
       "444  0.807692  0.192308  \n",
       "\n",
       "[1000 rows x 8 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vq-base.en-2d-4096c-60k.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f6969629",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:38&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 7.47%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>None</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said, while on her lap...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>673</th>\n",
       "      <td>12.130</td>\n",
       "      <td>None</td>\n",
       "      <td>THE PRINCESS CERTAINLY WAS BEAUTIFUL AND HE WO...</td>\n",
       "      <td>The princess certainly was beautiful, and he w...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>674</th>\n",
       "      <td>2.295</td>\n",
       "      <td>None</td>\n",
       "      <td>HE ONLY SHOOK HIS HEAD</td>\n",
       "      <td>He only shook his head.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>355</th>\n",
       "      <td>2.885</td>\n",
       "      <td>None</td>\n",
       "      <td>I'M AFRAID I DON'T KNOW MUCH ABOUT THE LAND OF OZ</td>\n",
       "      <td>I'm afraid I don't know much about the land of...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>353</th>\n",
       "      <td>5.870</td>\n",
       "      <td>None</td>\n",
       "      <td>THE FIRST LOT WE TESTED ON OUR GLASS CAT WHICH...</td>\n",
       "      <td>The first lot we tested on our glass cat, whic...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cossay was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano Stettelos.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>1.805</td>\n",
       "      <td>None</td>\n",
       "      <td>HANS STIRS NOT</td>\n",
       "      <td>Honsters, nod.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>146</th>\n",
       "      <td>3.260</td>\n",
       "      <td>None</td>\n",
       "      <td>WHERE THEE AND THY FAMILY ARE KNOWN</td>\n",
       "      <td>Where's D and I-F where's D and I-F are known?</td>\n",
       "      <td>1.428571</td>\n",
       "      <td>0.714286</td>\n",
       "      <td>0.836735</td>\n",
       "      <td>0.163265</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>996</th>\n",
       "      <td>19.915</td>\n",
       "      <td>None</td>\n",
       "      <td>EDISON HAD INSTALLED HIS HISTORIC FIRST GREAT ...</td>\n",
       "      <td>Edison had installed his historic first-grade ...</td>\n",
       "      <td>3.208333</td>\n",
       "      <td>0.766169</td>\n",
       "      <td>0.771041</td>\n",
       "      <td>0.228959</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "0     8.230  None  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "673  12.130  None  THE PRINCESS CERTAINLY WAS BEAUTIFUL AND HE WO...   \n",
       "674   2.295  None                             HE ONLY SHOOK HIS HEAD   \n",
       "355   2.885  None  I'M AFRAID I DON'T KNOW MUCH ABOUT THE LAND OF OZ   \n",
       "353   5.870  None  THE FIRST LOT WE TESTED ON OUR GLASS CAT WHICH...   \n",
       "..      ...   ...                                                ...   \n",
       "371   2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "592   1.805  None                                     HANS STIRS NOT   \n",
       "146   3.260  None                WHERE THEE AND THY FAMILY ARE KNOWN   \n",
       "996  19.915  None  EDISON HAD INSTALLED HIS HISTORIC FIRST GREAT ...   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "0    And often has my mother said, while on her lap...  0.000000  0.000000  \\\n",
       "673  The princess certainly was beautiful, and he w...  0.000000  0.000000   \n",
       "674                            He only shook his head.  0.000000  0.000000   \n",
       "355  I'm afraid I don't know much about the land of...  0.000000  0.000000   \n",
       "353  The first lot we tested on our glass cat, whic...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "371                       Cossay was my man's servant.  1.000000  0.666667   \n",
       "538                                 Stefano Stettelos.  1.000000  1.000000   \n",
       "592                                     Honsters, nod.  1.000000  1.000000   \n",
       "146     Where's D and I-F where's D and I-F are known?  1.428571  0.714286   \n",
       "996  Edison had installed his historic first-grade ...  3.208333  0.766169   \n",
       "\n",
       "          wil       wip  \n",
       "0    0.000000  1.000000  \n",
       "673  0.000000  1.000000  \n",
       "674  0.000000  1.000000  \n",
       "355  0.000000  1.000000  \n",
       "353  0.000000  1.000000  \n",
       "..        ...       ...  \n",
       "371  0.833333  0.166667  \n",
       "538  1.000000  0.000000  \n",
       "592  1.000000  0.000000  \n",
       "146  0.836735  0.163265  \n",
       "996  0.771041  0.228959  \n",
       "\n",
       "[1000 rows x 8 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vq-base.en-2d-4096c-cosine32-padfix-premlp-premean-learnpos-5e-cleaned-eqvad.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a90a25de",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 1.5)"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGwCAYAAABVdURTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACXDklEQVR4nOz9e3Bk+VnY/7/P/Zy+666R5r47a6/X9npZr5flbrLgn8Nv6+dKpeLCCXY5gQQKDGErFbyA7ZgELwkYTMUGFwYCLgI2IcSVX9lfG7Jk7RhvsL03fNnL7M5FM6PRtdX3cz/n+8dp9Uoz0oyk0ailnudVpbKnt7v1aanVn+d8Ps/neZQ0TVOEEEIIIQaE2u8BCCGEEELsJgluhBBCCDFQJLgRQgghxECR4EYIIYQQA0WCGyGEEEIMFAluhBBCCDFQJLgRQgghxEDR+z2AvZYkCbOzsxSLRRRF6fdwhBBCCLEFaZrSbDaZmppCVa+9NnPLBTezs7McOXKk38MQQgghxA5cuHCBw4cPX/M+t1xwUywWgeyHUyqV+jwaIYQQQmxFo9HgyJEjvXn8Wm654GZ1K6pUKklwI4QQQhwwW0kpkYRiIYQQQgwUCW6EEEIIMVAkuBFCCCHEQJHgRgghhBADRYIbIYQQQgwUCW6EEEIIMVAkuBFCCCHEQJHgRgghhBADRYIbIYQQQgwUCW6EEEIIMVAkuBFCCCHEQLnleksNEi+MCeIES1exdK3fwxFCCCH2BQluDqAoTpipdpitufhxgqWpTFUcjo3k0dTrNxQTQgghBplsSx1AM9UOpxeaqIrCkGOiKgqnF5qcX273e2hCCCFE30lwc8B4YcxszaVoGRRtA0NTKdoGRctgtu7hR3G/hyiEEEL0lQQ3B0wQJ/hxgm2sz7GxDQ0/ivGjpE8jE0IIIfYHCW4OGFNTsTQVL1y/QuOFMZauYenyKxVCCHFrk5nwgLENjamKQ9MPaXohYZzQ9EKafshU2ZZTU0IIIW55fQ1uvvSlL/HQQw8xNTWFoih85jOf2fJj//Zv/xZd13nDG95w08a3Xx0byXNqvEgCrLgBCXBqvMixkXy/hyaEEEL0XV+Dm3a7zd13383HPvaxbT2uVqvxzne+k3/wD/7BTRrZ/qapCifHCtx3fIj7jg9z3/EhTo4V5Bi4EEIIQZ/r3Lz1rW/lrW9967Yf95M/+ZO84x3vQNO0ba32DJosx0a2oYQQQoi1DlzOzX/5L/+FM2fO8IEPfGBL9/d9n0ajse5LCCGEEIPrQAU3p0+f5r3vfS9/8id/gq5vbdHp0UcfpVwu976OHDlyk0cphBBCiH46MMFNHMe84x3v4IMf/CB33HHHlh/3yCOPUK/Xe18XLly4iaMUQgghRL8dmN5SzWaTr3/96zz99NP8zM/8DABJkpCmKbqu81d/9Vf84A/+4FWPsywLy7L2erhCCCGE6JMDE9yUSiW+8Y1vrLvtd37nd/ibv/kb/uIv/oITJ070aWRCCCGE2E/6Gty0Wi1eeuml3r/Pnj3LM888w/DwMEePHuWRRx7h0qVLfPKTn0RVVV772teue/z4+Di2bV91uxBCCCFuXX0Nbr7+9a/z5je/uffvhx9+GIB3vetd/NEf/RGXL19mZmamX8MTQgghxAGkpGma9nsQe6nRaFAul6nX65RKpX4PRwghhBBbsJ35+8CclhJCCCGE2AoJboQQQggxUCS4EUIIIcRAkeBGCCGEEANFghshhBBCDBQJboQQQggxUCS4EUIIIcRAkeBGCCGEEANFghshhBBCDBQJboQQQggxUCS4EUIIIcRAkeBGCCGEEANFghshhBBCDBQJboQQQggxUCS4EUIIIcRAkeBGCCGEEANFghshhBBCDBQJboQQQggxUCS4EUIIIcRAkeBGCCGEEANFghshhBBCDBQJboQQQggxUCS4EUIIIcRAkeBGCCGEEANFghshhBBCDBQJboQQQggxUCS4EUIIIcRAkeBGCCGEEANFghshhBBCDBQJboQQQggxUCS4EUIIIcRAkeBGCCGEEANFghshhBBCDBQJboQQQggxUCS4EUIIIcRAkeBGCCGEEANFghshhBBCDBQJboQQQggxUPoa3HzpS1/ioYceYmpqCkVR+MxnPnPN+//lX/4lP/RDP8TY2BilUokHHniAL3zhC3szWCGEEEIcCH0NbtrtNnfffTcf+9jHtnT/L33pS/zQD/0Qn/vc53jyySd585vfzEMPPcTTTz99k0cqhBBCiINCSdM07fcgABRF4X/8j//B2972tm097q677uLtb38773//+7d0/0ajQblcpl6vUyqVdjBSIYQQQuy17czf+h6N6aZIkoRms8nw8PCm9/F9H9/3e/9uNBp7MTQhhBBC9MmBTij+jd/4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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = _8.plot.scatter('secs', 'wer', alpha=.2)\n",
    "ax.set_ylim(0, 1.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "def4df3d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = _15['secs'].hist()\n",
    "ax.set_yscale('log')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "007dc314",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D>]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA70UlEQVR4nO3de3xU9YH///eZQK6QITgQQkhIgAq1YJAAMbqilmzx8m1F2G56+S0sa+22ir+2absGdwut3TZot11WobW1tX4f7aq0FXW3rfYSRZdCBQIIeGGFJiRCEoiECSYhwcz5/hFmyGTOJDNJJp9cXs/HYx4kZ87lM4fR8+ZztWzbtgUAAGCIy3QBAADA6EYYAQAARhFGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGDUGNMFiITP59PJkyc1fvx4WZZlujgAACACtm3r3Llzmjp1qlyu8PUfwyKMnDx5UllZWaaLAQAA+qCmpkbTpk0L+/6wCCPjx4+X1PlhUlNTDZcGAABEoqmpSVlZWYHneDjDIoz4m2ZSU1MJIwAADDO9dbGgAysAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwqk9hZMuWLcrJyVFiYqIKCgq0e/fusPs+/vjjsiwr6JWYmNjnAgMAgJEl6jCydetWlZSUaMOGDdq3b5/y8vK0bNkynTp1Kuwxqampqq2tDbyOHz/er0IPtFpvq3Yea1CttzWi7QAAYOBEvTbN9773Pd15551as2aNJOmRRx7Rb37zGz322GMqLS11PMayLE2ZMqV/JY2RrXuqtW7bIflsyWVJZSvmqXhRdtjtAABgYEVVM9Le3q6KigoVFRVdOoHLpaKiIu3atSvsce+9956mT5+urKws3XbbbXr99dd7vE5bW5uampqCXrFQ620NBA5J8tnSfdsO67WaRsft1JAAADDwogojDQ0N6ujoUHp6etD29PR01dXVOR4ze/ZsPfbYY3ruuef085//XD6fT9dcc43eeeedsNcpKyuT2+0OvLKysqIpZsQqG5oDgcOvw7a1p6rRcXtVQ0tMygEAwGgW89E0hYWFWrVqlebPn6/rr79e27Zt06RJk/TDH/4w7DHr1q2T1+sNvGpqamJStlxPilzdVjWOsywtyklz3J7jSY5JOQAAGM2iCiMej0dxcXGqr68P2l5fXx9xn5CxY8fqqquu0tGjR8Puk5CQoNTU1KBXLGS4k1S2Yp7irM7kEWdZ+vaKucrLSnPcnuFOikk5AAAYzaLqwBofH6/8/HyVl5dr+fLlkiSfz6fy8nKtXbs2onN0dHTo0KFDuuWWW6IubCwUL8rWkssnqaqhRTme5EDgCLcdAAAMrKhH05SUlGj16tVauHChFi9erE2bNqm5uTkwumbVqlXKzMxUWVmZJOn+++/X1VdfrVmzZuns2bP6zne+o+PHj+szn/nMwH6SfshwJzmGjXDbAQDAwIk6jBQXF+v06dNav3696urqNH/+fL3wwguBTq3V1dVyuS61/jQ2NurOO+9UXV2d0tLSlJ+fr507d+qKK64YuE8BAACGLcu2bbv33cxqamqS2+2W1+uNWf8RAAAwsCJ9frM2DQAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIzqUxjZsmWLcnJylJiYqIKCAu3evTui45566ilZlqXly5f35bIAAGAEijqMbN26VSUlJdqwYYP27dunvLw8LVu2TKdOnerxuKqqKn3lK1/Rdddd1+fCAgCAkSfqMPK9731Pd955p9asWaMrrrhCjzzyiJKTk/XYY4+FPaajo0Of/vSn9Y1vfEMzZszoV4EBAMDIElUYaW9vV0VFhYqKii6dwOVSUVGRdu3aFfa4+++/X5MnT9Ydd9wR0XXa2trU1NQU9AIAACNTVGGkoaFBHR0dSk9PD9qenp6uuro6x2N27Nihn/zkJ3r00Ucjvk5ZWZnc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X//612VZVtBrzpw5potlxCuvvKKPfvSjmjp1qizL0rPPPhv0vm3bWr9+vTIyMpSUlKSioiK9/fbbZgprQG/35+///u9Dvks33XSTmcIOsrKyMi1atEjjx4/X5MmTtXz5ch05ciRon/Pnz+vuu+/WZZddpnHjxmnlypWqr683VOLBE8m9ueGGG0K+O5/73OcMlXjw/OAHP9CVV14ZmNissLBQzz//fOD90fqdicawCiNbt25VSUmJNmzYoH379ikvL0/Lli3TqVOnTBdtSPjQhz6k2trawGvHjh2mi2REc3Oz8vLytGXLFsf3H3zwQT300EN65JFH9OqrryolJUXLli3T+fPnB7mkZvR2fyTppptuCvouPfnkk4NYQnNefvll3X333frzn/+sP/zhD7pw4YI+8pGPqLm5ObDPl770Jf33f/+3fvnLX+rll1/WyZMntWLFCoOlHhyR3BtJuvPOO4O+Ow8++KChEg+eadOmaePGjaqoqNDevXv14Q9/WLfddptef/11SaP3OxMVexhZvHixfffddwd+7+josKdOnWqXlZUZLNXQsGHDBjsvL890MYYcSfYzzzwT+N3n89lTpkyxv/Od7wS2nT171k5ISLCffPJJAyU0q/v9sW3bXr16tX3bbbcZKc9Qc+rUKVuS/fLLL9u23fldGTt2rP3LX/4ysM+bb75pS7J37dplqphGdL83tm3b119/vf2FL3zBXKGGkLS0NPvHP/4x35kIDZuakfb2dlVUVKioqCiwzeVyqaioSLt27TJYsqHj7bff1tSpUzVjxgx9+tOfVnV1tekiDTmVlZWqq6sL+h653W4VFBTwPepi+/btmjx5smbPnq3Pf/7zevfdd00XyQiv1ytJmjhxoiSpoqJCFy5cCPr+zJkzR9nZ2aPu+9P93vj953/+pzwej+bOnat169appaXFRPGM6ejo0FNPPaXm5mYVFhbynYnQsFgoT5IaGhrU0dGh9PT0oO3p6el66623DJVq6CgoKNDjjz+u2bNnq7a2Vt/4xjd03XXX6fDhwxo/frzp4g0ZdXV1kuT4PfK/N9rddNNNWrFihXJzc3Xs2DHdd999uvnmm7Vr1y7FxcWZLt6g8fl8+uIXv6hrr71Wc+fOldT5/YmPj9eECROC9h1t3x+neyNJn/rUpzR9+nRNnTpVBw8e1L333qsjR45o27ZtBks7OA4dOqTCwkKdP39e48aN0zPPPKMrrrhCBw4c4DsTgWETRtCzm2++OfDzlVdeqYKCAk2fPl2/+MUvdMcddxgsGYabT3ziE4Gf582bpyuvvFIzZ87U9u3btXTpUoMlG1x33323Dh8+PGr7XvUk3L357Gc/G/h53rx5ysjI0NKlS3Xs2DHNnDlzsIs5qGbPnq0DBw7I6/XqV7/6lVavXq2XX37ZdLGGjWHTTOPxeBQXFxfSA7m+vl5TpkwxVKqha8KECbr88st19OhR00UZUvzfFb5HkZsxY4Y8Hs+o+i6tXbtWv/71r/XSSy9p2rRpge1TpkxRe3u7zp49G7T/aPr+hLs3TgoKCiRpVHx34uPjNWvWLOXn56usrEx5eXn6j//4D74zERo2YSQ+Pl75+fkqLy8PbPP5fCovL1dhYaHBkg1N7733no4dO6aMjAzTRRlScnNzNWXKlKDvUVNTk1599VW+R2G88847evfdd0fFd8m2ba1du1bPPPOMXnzxReXm5ga9n5+fr7FjxwZ9f44cOaLq6uoR//3p7d44OXDggCSNiu9Odz6fT21tbaP6OxMV0z1oo/HUU0/ZCQkJ9uOPP26/8cYb9mc/+1l7woQJdl1dnemiGfflL3/Z3r59u11ZWWn/6U9/souKimyPx2OfOnXKdNEG3blz5+z9+/fb+/fvtyXZ3/ve9+z9+/fbx48ft23btjdu3GhPmDDBfu655+yDBw/at912m52bm2u3trYaLvng6On+nDt3zv7KV75i79q1y66srLT/+Mc/2gsWLLA/8IEP2OfPnzdd9Jj7/Oc/b7vdbnv79u12bW1t4NXS0hLY53Of+5ydnZ1tv/jii/bevXvtwsJCu7Cw0GCpB0dv9+bo0aP2/fffb+/du9eurKy0n3vuOXvGjBn2kiVLDJc89kpLS+2XX37ZrqystA8ePGiXlpbalmXZv//9723bHr3fmWgMqzBi27b98MMP29nZ2XZ8fLy9ePFi+89//rPpIg0JxcXFdkZGhh0fH29nZmbaxcXF9tGjR00Xy4iXXnrJlhTyWr16tW3bncN7v/a1r9np6el2QkKCvXTpUvvIkSNmCz2Iero/LS0t9kc+8hF70qRJ9tixY+3p06fbd95556gJ/E73RZL905/+NLBPa2urfdddd9lpaWl2cnKyffvtt9u1tbXmCj1Iers31dXV9pIlS+yJEyfaCQkJ9qxZs+yvfvWrttfrNVvwQfAP//AP9vTp0+34+Hh70qRJ9tKlSwNBxLZH73cmGpZt2/bg1cMAAAAEGzZ9RgAAwMhEGAEAAEYRRgAAgFGEEQAAYBRhBAAAGEUYAQAARhFGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGDU/wPbSw1MH/U7kwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(_15['secs'], 1/_15['gt_text'].str.split('\\w+').str.len(), '.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2b6f26a6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:33&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 6.37%\n",
      "WER (w/o hallucinations): 6.37%\n",
      "\n",
      "1\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:28&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 10.69%\n",
      "WER (w/o hallucinations): 9.89%\n",
      "\n",
      "2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:34&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 12.34%\n",
      "WER (w/o hallucinations): 11.79%\n",
      "\n",
      "3\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:31&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 15.83%\n",
      "WER (w/o hallucinations): 15.30%\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# the reproducibility got pretty low ;)\n",
    "for i in range(4):\n",
    "    print(i)\n",
    "    test_model(f\"test-run-{i}.model\")\n",
    "    print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1a74c9f4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:31&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 8.81%\n",
      "WER (w/o hallucinations): 8.81%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>None</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said, while on her lap...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>368</th>\n",
       "      <td>6.190</td>\n",
       "      <td>None</td>\n",
       "      <td>EVEN SO I HAD JUST RETURNED FROM AN ARDUOUS JO...</td>\n",
       "      <td>Even so, I had just returned from an arduous j...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>691</th>\n",
       "      <td>4.985</td>\n",
       "      <td>None</td>\n",
       "      <td>TO GIVE AN IDEA OF THESE CONVERSATIONS I WILL ...</td>\n",
       "      <td>To give an idea of these conversations, I will...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>366</th>\n",
       "      <td>3.615</td>\n",
       "      <td>None</td>\n",
       "      <td>CHAPTER THREE AS MASTER WISHES</td>\n",
       "      <td>Chapter 3 As Master Wishes</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>365</th>\n",
       "      <td>5.780</td>\n",
       "      <td>None</td>\n",
       "      <td>I WILL SHOW YOU WHAT A GOOD JOB I DID AND SHE ...</td>\n",
       "      <td>I will show you what a good job I did, and she...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>792</th>\n",
       "      <td>1.810</td>\n",
       "      <td>None</td>\n",
       "      <td>VENICE</td>\n",
       "      <td>VINIS.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>324</th>\n",
       "      <td>2.700</td>\n",
       "      <td>None</td>\n",
       "      <td>ASKED THE VOICE IN SCORNFUL ACCENTS</td>\n",
       "      <td>Ask the voice in the voice in the voice in the...</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>0.875000</td>\n",
       "      <td>0.125000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano's dead loss.</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>16.735</td>\n",
       "      <td>None</td>\n",
       "      <td>P S PRAY SIR EXCUSE ME FOR WRITING TO YOU A SE...</td>\n",
       "      <td>P-S-P-S-P-S-P-S-P-S-P-S-P-S-P-S-P-S-P-S-P-S-P-...</td>\n",
       "      <td>2.037037</td>\n",
       "      <td>0.982143</td>\n",
       "      <td>0.999339</td>\n",
       "      <td>0.000661</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>2.020</td>\n",
       "      <td>None</td>\n",
       "      <td>SQUEAK SQUEAK</td>\n",
       "      <td>In the past, we have a question.</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "0     8.230  None  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "368   6.190  None  EVEN SO I HAD JUST RETURNED FROM AN ARDUOUS JO...   \n",
       "691   4.985  None  TO GIVE AN IDEA OF THESE CONVERSATIONS I WILL ...   \n",
       "366   3.615  None                     CHAPTER THREE AS MASTER WISHES   \n",
       "365   5.780  None  I WILL SHOW YOU WHAT A GOOD JOB I DID AND SHE ...   \n",
       "..      ...   ...                                                ...   \n",
       "792   1.810  None                                             VENICE   \n",
       "324   2.700  None                ASKED THE VOICE IN SCORNFUL ACCENTS   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "26   16.735  None  P S PRAY SIR EXCUSE ME FOR WRITING TO YOU A SE...   \n",
       "106   2.020  None                                      SQUEAK SQUEAK   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "0    And often has my mother said, while on her lap...  0.000000  0.000000  \\\n",
       "368  Even so, I had just returned from an arduous j...  0.000000  0.000000   \n",
       "691  To give an idea of these conversations, I will...  0.000000  0.000000   \n",
       "366                         Chapter 3 As Master Wishes  0.000000  0.000000   \n",
       "365  I will show you what a good job I did, and she...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "792                                             VINIS.  1.000000  1.000000   \n",
       "324  Ask the voice in the voice in the voice in the...  1.500000  0.750000   \n",
       "538                               Stefano's dead loss.  2.000000  1.000000   \n",
       "26   P-S-P-S-P-S-P-S-P-S-P-S-P-S-P-S-P-S-P-S-P-S-P-...  2.037037  0.982143   \n",
       "106                   In the past, we have a question.  3.500000  1.000000   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "0    0.000000  1.000000          False  \n",
       "368  0.000000  1.000000          False  \n",
       "691  0.000000  1.000000          False  \n",
       "366  0.000000  1.000000          False  \n",
       "365  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "792  1.000000  0.000000          False  \n",
       "324  0.875000  0.125000          False  \n",
       "538  1.000000  0.000000          False  \n",
       "26   0.999339  0.000661          False  \n",
       "106  1.000000  0.000000          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"test-run-warm1000.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7e744b9e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:34&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 8.41%\n",
      "WER (w/o hallucinations): 8.05%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>None</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said, while on her lap...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>655</th>\n",
       "      <td>4.895</td>\n",
       "      <td>None</td>\n",
       "      <td>I SHALL BE PUNISHED FOR IT NOW I SUPPOSE BY BE...</td>\n",
       "      <td>I shall be punished for it now, I suppose, by ...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>657</th>\n",
       "      <td>3.640</td>\n",
       "      <td>None</td>\n",
       "      <td>I AM VERY TIRED OF SWIMMING ABOUT HERE O MOUSE</td>\n",
       "      <td>I am very tired of swimming about here, oh mouse.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>318</th>\n",
       "      <td>5.115</td>\n",
       "      <td>None</td>\n",
       "      <td>MOST PEOPLE TALK TOO MUCH SO IT IS A RELIEF TO...</td>\n",
       "      <td>Most people talk too much, so it is a relief t...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>317</th>\n",
       "      <td>7.920</td>\n",
       "      <td>None</td>\n",
       "      <td>HE SELECTED A SMALL GOLD BOTTLE WITH A PEPPER ...</td>\n",
       "      <td>He selected a small gold bottle with a pepper ...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>549</th>\n",
       "      <td>10.575</td>\n",
       "      <td>None</td>\n",
       "      <td>AT MOST BY AN ALMS GIVEN TO A BEGGAR WHOSE BLE...</td>\n",
       "      <td>At most, by an alms given to a beggar whose bl...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>399</th>\n",
       "      <td>6.365</td>\n",
       "      <td>None</td>\n",
       "      <td>I WAS WELL SATISFIED WITH MY CABIN WHICH WAS L...</td>\n",
       "      <td>I was well satisfied with my cabin, which was ...</td>\n",
       "      <td>1.052632</td>\n",
       "      <td>0.540541</td>\n",
       "      <td>0.588905</td>\n",
       "      <td>0.411095</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Steffinor's Daedalus.</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>659</th>\n",
       "      <td>4.995</td>\n",
       "      <td>None</td>\n",
       "      <td>WE WON'T TALK ABOUT HER ANY MORE IF YOU'D RATH...</td>\n",
       "      <td>We won't talk about her anymore if he'd rather...</td>\n",
       "      <td>1.866667</td>\n",
       "      <td>0.700000</td>\n",
       "      <td>0.760000</td>\n",
       "      <td>0.240000</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>8.800</td>\n",
       "      <td>None</td>\n",
       "      <td>THOUGHT THE FIR TREE AND BELIEVED IT ALL BECAU...</td>\n",
       "      <td>thought the fur tree, and believed it all, bec...</td>\n",
       "      <td>4.619048</td>\n",
       "      <td>0.829060</td>\n",
       "      <td>0.837200</td>\n",
       "      <td>0.162800</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "0     8.230  None  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "655   4.895  None  I SHALL BE PUNISHED FOR IT NOW I SUPPOSE BY BE...   \n",
       "657   3.640  None     I AM VERY TIRED OF SWIMMING ABOUT HERE O MOUSE   \n",
       "318   5.115  None  MOST PEOPLE TALK TOO MUCH SO IT IS A RELIEF TO...   \n",
       "317   7.920  None  HE SELECTED A SMALL GOLD BOTTLE WITH A PEPPER ...   \n",
       "..      ...   ...                                                ...   \n",
       "549  10.575  None  AT MOST BY AN ALMS GIVEN TO A BEGGAR WHOSE BLE...   \n",
       "399   6.365  None  I WAS WELL SATISFIED WITH MY CABIN WHICH WAS L...   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "659   4.995  None  WE WON'T TALK ABOUT HER ANY MORE IF YOU'D RATH...   \n",
       "95    8.800  None  THOUGHT THE FIR TREE AND BELIEVED IT ALL BECAU...   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "0    And often has my mother said, while on her lap...  0.000000  0.000000  \\\n",
       "655  I shall be punished for it now, I suppose, by ...  0.000000  0.000000   \n",
       "657  I am very tired of swimming about here, oh mouse.  0.000000  0.000000   \n",
       "318  Most people talk too much, so it is a relief t...  0.000000  0.000000   \n",
       "317  He selected a small gold bottle with a pepper ...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "549  At most, by an alms given to a beggar whose bl...  1.000000  0.500000   \n",
       "399  I was well satisfied with my cabin, which was ...  1.052632  0.540541   \n",
       "538                              Steffinor's Daedalus.  1.500000  1.000000   \n",
       "659  We won't talk about her anymore if he'd rather...  1.866667  0.700000   \n",
       "95   thought the fur tree, and believed it all, bec...  4.619048  0.829060   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "0    0.000000  1.000000          False  \n",
       "655  0.000000  1.000000          False  \n",
       "657  0.000000  1.000000          False  \n",
       "318  0.000000  1.000000          False  \n",
       "317  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "549  0.500000  0.500000           True  \n",
       "399  0.588905  0.411095          False  \n",
       "538  1.000000  0.000000          False  \n",
       "659  0.760000  0.240000           True  \n",
       "95   0.837200  0.162800          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"test-run-1e.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "77ca6463",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:30&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 7.71%\n",
      "WER (w/o hallucinations): 7.71%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>403</th>\n",
       "      <td>5.370</td>\n",
       "      <td>None</td>\n",
       "      <td>DEPARTING FROM FIVE HUNDRED THOUSAND THROATS T...</td>\n",
       "      <td>Departing from 500,000 throats, three cheers b...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>922</th>\n",
       "      <td>4.400</td>\n",
       "      <td>None</td>\n",
       "      <td>BUT HOW DID SHE MANAGE TO RENDER IT SO FASHION...</td>\n",
       "      <td>But how did she manage to render it so fashion...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>629</th>\n",
       "      <td>3.235</td>\n",
       "      <td>None</td>\n",
       "      <td>TWO HOURS AFTERWARDS A TERRIBLE SHOCK AWOKE ME</td>\n",
       "      <td>Two hours afterwards, a terrible shock, awoke me.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>355</th>\n",
       "      <td>2.885</td>\n",
       "      <td>None</td>\n",
       "      <td>I'M AFRAID I DON'T KNOW MUCH ABOUT THE LAND OF OZ</td>\n",
       "      <td>I'm afraid I don't know much about the land of...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>353</th>\n",
       "      <td>5.870</td>\n",
       "      <td>None</td>\n",
       "      <td>THE FIRST LOT WE TESTED ON OUR GLASS CAT WHICH...</td>\n",
       "      <td>The first lot we tested on our glass cat, whic...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>849</th>\n",
       "      <td>3.560</td>\n",
       "      <td>None</td>\n",
       "      <td>I HAD A NOTION IT WAS YOU MATE AS SAVED ME FRO...</td>\n",
       "      <td>I'll have a note.</td>\n",
       "      <td>0.928571</td>\n",
       "      <td>0.866667</td>\n",
       "      <td>0.942857</td>\n",
       "      <td>0.057143</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>741</th>\n",
       "      <td>16.360</td>\n",
       "      <td>None</td>\n",
       "      <td>OF WHAT MISSUS NEVERBEND HAD GONE THROUGH IN P...</td>\n",
       "      <td>Of what Mrs. N N N N N N N N N N N N N N N N N...</td>\n",
       "      <td>0.936170</td>\n",
       "      <td>0.936170</td>\n",
       "      <td>0.992021</td>\n",
       "      <td>0.007979</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Casa was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano Stetelos.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>1.805</td>\n",
       "      <td>None</td>\n",
       "      <td>HANS STIRS NOT</td>\n",
       "      <td>Hon Stur's Night.</td>\n",
       "      <td>1.333333</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "403   5.370  None  DEPARTING FROM FIVE HUNDRED THOUSAND THROATS T...  \\\n",
       "922   4.400  None  BUT HOW DID SHE MANAGE TO RENDER IT SO FASHION...   \n",
       "629   3.235  None     TWO HOURS AFTERWARDS A TERRIBLE SHOCK AWOKE ME   \n",
       "355   2.885  None  I'M AFRAID I DON'T KNOW MUCH ABOUT THE LAND OF OZ   \n",
       "353   5.870  None  THE FIRST LOT WE TESTED ON OUR GLASS CAT WHICH...   \n",
       "..      ...   ...                                                ...   \n",
       "849   3.560  None  I HAD A NOTION IT WAS YOU MATE AS SAVED ME FRO...   \n",
       "741  16.360  None  OF WHAT MISSUS NEVERBEND HAD GONE THROUGH IN P...   \n",
       "371   2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "592   1.805  None                                     HANS STIRS NOT   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "403  Departing from 500,000 throats, three cheers b...  0.000000  0.000000  \\\n",
       "922  But how did she manage to render it so fashion...  0.000000  0.000000   \n",
       "629  Two hours afterwards, a terrible shock, awoke me.  0.000000  0.000000   \n",
       "355  I'm afraid I don't know much about the land of...  0.000000  0.000000   \n",
       "353  The first lot we tested on our glass cat, whic...  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "849                                  I'll have a note.  0.928571  0.866667   \n",
       "741  Of what Mrs. N N N N N N N N N N N N N N N N N...  0.936170  0.936170   \n",
       "371                         Casa was my man's servant.  1.000000  0.666667   \n",
       "538                                  Stefano Stetelos.  1.000000  1.000000   \n",
       "592                                  Hon Stur's Night.  1.333333  1.000000   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "403  0.000000  1.000000          False  \n",
       "922  0.000000  1.000000          False  \n",
       "629  0.000000  1.000000          False  \n",
       "355  0.000000  1.000000          False  \n",
       "353  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "849  0.942857  0.057143          False  \n",
       "741  0.992021  0.007979          False  \n",
       "371  0.833333  0.166667          False  \n",
       "538  1.000000  0.000000          False  \n",
       "592  1.000000  0.000000          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# but it got better after some hyperparam tuning\n",
    "test_model(\"vqmodel-4e-6454-hyptuned.model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bf586d26",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:41&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 7.38%\n",
      "WER (w/o hallucinations): 7.38%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>None</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said, while on her lap...</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>350</th>\n",
       "      <td>10.680</td>\n",
       "      <td>None</td>\n",
       "      <td>AT ONE END STOOD A GREAT FIREPLACE IN WHICH A ...</td>\n",
       "      <td>At one end stood a great fireplace, in which a...</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>349</th>\n",
       "      <td>2.130</td>\n",
       "      <td>None</td>\n",
       "      <td>THE WOMAN SEEMED THOUGHTFUL</td>\n",
       "      <td>The woman seemed thoughtful.</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>680</th>\n",
       "      <td>6.450</td>\n",
       "      <td>None</td>\n",
       "      <td>HE DARTED LIKE AN ARROW THROUGH ALL THE HALLS ...</td>\n",
       "      <td>He darted like an arrow through all the halls,...</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>347</th>\n",
       "      <td>3.665</td>\n",
       "      <td>None</td>\n",
       "      <td>OJO HAD NEVER EATEN SUCH A FINE MEAL IN ALL HI...</td>\n",
       "      <td>Ojo had never eaten such a fine meal in all hi...</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>1.805</td>\n",
       "      <td>None</td>\n",
       "      <td>HANS STIRS NOT</td>\n",
       "      <td>Honsters, Nod.</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>792</th>\n",
       "      <td>1.810</td>\n",
       "      <td>None</td>\n",
       "      <td>VENICE</td>\n",
       "      <td>VINUS.</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cossay was my man's servant.</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stephenos dead loss.</td>\n",
       "      <td>1.50000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>440</th>\n",
       "      <td>15.770</td>\n",
       "      <td>None</td>\n",
       "      <td>ELEVEN O'CLOCK HAD STRUCK IT WAS A FINE CLEAR ...</td>\n",
       "      <td>At the time of the day, the morning of the day...</td>\n",
       "      <td>4.12766</td>\n",
       "      <td>0.960396</td>\n",
       "      <td>0.993259</td>\n",
       "      <td>0.006741</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "0     8.230  None  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "350  10.680  None  AT ONE END STOOD A GREAT FIREPLACE IN WHICH A ...   \n",
       "349   2.130  None                        THE WOMAN SEEMED THOUGHTFUL   \n",
       "680   6.450  None  HE DARTED LIKE AN ARROW THROUGH ALL THE HALLS ...   \n",
       "347   3.665  None  OJO HAD NEVER EATEN SUCH A FINE MEAL IN ALL HI...   \n",
       "..      ...   ...                                                ...   \n",
       "592   1.805  None                                     HANS STIRS NOT   \n",
       "792   1.810  None                                             VENICE   \n",
       "371   2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "440  15.770  None  ELEVEN O'CLOCK HAD STRUCK IT WAS A FINE CLEAR ...   \n",
       "\n",
       "                                                  text      wer       mer   \n",
       "0    And often has my mother said, while on her lap...  0.00000  0.000000  \\\n",
       "350  At one end stood a great fireplace, in which a...  0.00000  0.000000   \n",
       "349                       The woman seemed thoughtful.  0.00000  0.000000   \n",
       "680  He darted like an arrow through all the halls,...  0.00000  0.000000   \n",
       "347  Ojo had never eaten such a fine meal in all hi...  0.00000  0.000000   \n",
       "..                                                 ...      ...       ...   \n",
       "592                                     Honsters, Nod.  1.00000  1.000000   \n",
       "792                                             VINUS.  1.00000  1.000000   \n",
       "371                       Cossay was my man's servant.  1.00000  0.666667   \n",
       "538                               Stephenos dead loss.  1.50000  1.000000   \n",
       "440  At the time of the day, the morning of the day...  4.12766  0.960396   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "0    0.000000  1.000000          False  \n",
       "350  0.000000  1.000000          False  \n",
       "349  0.000000  1.000000          False  \n",
       "680  0.000000  1.000000          False  \n",
       "347  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "592  1.000000  0.000000          False  \n",
       "792  1.000000  0.000000          False  \n",
       "371  0.833333  0.166667          False  \n",
       "538  1.000000  0.000000          False  \n",
       "440  0.993259  0.006741          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vqmodel-4e-6454-hyptuned-small.en.model\", N=1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "eb59def1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:32&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 6.01%\n",
      "WER (w/o hallucinations): 6.01%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>None</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said, while on her lap...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>390</th>\n",
       "      <td>1.975</td>\n",
       "      <td>None</td>\n",
       "      <td>WE DON'T KNOW WHERE IT WILL TAKE US</td>\n",
       "      <td>We don't know where it will take us.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>708</th>\n",
       "      <td>13.020</td>\n",
       "      <td>None</td>\n",
       "      <td>THE PAIN PRODUCED BY AN ACT OF HASTY AND ANGRY...</td>\n",
       "      <td>The pain produced by an act of hasty and angry...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>388</th>\n",
       "      <td>2.355</td>\n",
       "      <td>None</td>\n",
       "      <td>WE'RE LEAVING ON THE ABRAHAM LINCOLN</td>\n",
       "      <td>We're leaving on the Abraham Lincoln.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>387</th>\n",
       "      <td>2.735</td>\n",
       "      <td>None</td>\n",
       "      <td>A ROUTE SLIGHTLY LESS DIRECT THAT'S ALL</td>\n",
       "      <td>A route slightly less direct, that's all.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>918</th>\n",
       "      <td>3.000</td>\n",
       "      <td>None</td>\n",
       "      <td>THAT IS TRUE BADAUDERIE</td>\n",
       "      <td>That is true, bad old gree.</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.625000</td>\n",
       "      <td>0.375000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>809</th>\n",
       "      <td>8.875</td>\n",
       "      <td>None</td>\n",
       "      <td>WHEN THE BLUESKINS SAW GHIP GHISIZZLE THEY RAI...</td>\n",
       "      <td>Thanks for watching!</td>\n",
       "      <td>0.961538</td>\n",
       "      <td>0.961538</td>\n",
       "      <td>0.987179</td>\n",
       "      <td>0.012821</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>643</th>\n",
       "      <td>12.020</td>\n",
       "      <td>None</td>\n",
       "      <td>ALICE TOOK UP THE FAN AND GLOVES AND AS THE HA...</td>\n",
       "      <td>Thank you.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cosse was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefanos de los</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "0     8.230  None  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "390   1.975  None                WE DON'T KNOW WHERE IT WILL TAKE US   \n",
       "708  13.020  None  THE PAIN PRODUCED BY AN ACT OF HASTY AND ANGRY...   \n",
       "388   2.355  None               WE'RE LEAVING ON THE ABRAHAM LINCOLN   \n",
       "387   2.735  None            A ROUTE SLIGHTLY LESS DIRECT THAT'S ALL   \n",
       "..      ...   ...                                                ...   \n",
       "918   3.000  None                            THAT IS TRUE BADAUDERIE   \n",
       "809   8.875  None  WHEN THE BLUESKINS SAW GHIP GHISIZZLE THEY RAI...   \n",
       "643  12.020  None  ALICE TOOK UP THE FAN AND GLOVES AND AS THE HA...   \n",
       "371   2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "0    And often has my mother said, while on her lap...  0.000000  0.000000  \\\n",
       "390               We don't know where it will take us.  0.000000  0.000000   \n",
       "708  The pain produced by an act of hasty and angry...  0.000000  0.000000   \n",
       "388              We're leaving on the Abraham Lincoln.  0.000000  0.000000   \n",
       "387          A route slightly less direct, that's all.  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "918                        That is true, bad old gree.  0.750000  0.500000   \n",
       "809                               Thanks for watching!  0.961538  0.961538   \n",
       "643                                         Thank you.  1.000000  1.000000   \n",
       "371                        Cosse was my man's servant.  1.000000  0.666667   \n",
       "538                                    Stefanos de los  1.500000  1.000000   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "0    0.000000  1.000000          False  \n",
       "390  0.000000  1.000000          False  \n",
       "708  0.000000  1.000000          False  \n",
       "388  0.000000  1.000000          False  \n",
       "387  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "918  0.625000  0.375000          False  \n",
       "809  0.987179  0.012821          False  \n",
       "643  1.000000  0.000000          False  \n",
       "371  0.833333  0.166667          False  \n",
       "538  1.000000  0.000000          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vqmodel-4e-hyptuned-16gpu.model\", N=1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9802902d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:32&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 5.94%\n",
      "WER (w/o hallucinations): 5.94%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>757</th>\n",
       "      <td>10.030</td>\n",
       "      <td>None</td>\n",
       "      <td>THEREFORE I FEEL MYSELF QUITE ABLE AS PRESIDEN...</td>\n",
       "      <td>Therefore, I feel myself quite able, as Presid...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>628</th>\n",
       "      <td>2.550</td>\n",
       "      <td>None</td>\n",
       "      <td>DURING HIS WATCH I SLEPT</td>\n",
       "      <td>During his watch, I slept.</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>756</th>\n",
       "      <td>4.735</td>\n",
       "      <td>None</td>\n",
       "      <td>YOU HAVE COME TO US THREATENING US WITH ABSOLU...</td>\n",
       "      <td>You have come to us threatening us with absolu...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>377</th>\n",
       "      <td>3.910</td>\n",
       "      <td>None</td>\n",
       "      <td>HE WENT HERE THERE AND EVERYWHERE IN PERFECT C...</td>\n",
       "      <td>He went here, there, and everywhere in perfect...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>376</th>\n",
       "      <td>8.340</td>\n",
       "      <td>None</td>\n",
       "      <td>NEVER DID HE OBJECT TO BUCKLING UP HIS SUITCAS...</td>\n",
       "      <td>Never did he object to buckling up his suitcas...</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>918</th>\n",
       "      <td>3.000</td>\n",
       "      <td>None</td>\n",
       "      <td>THAT IS TRUE BADAUDERIE</td>\n",
       "      <td>That is true bad-delt gree.</td>\n",
       "      <td>0.75</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.625000</td>\n",
       "      <td>0.375000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cossay was my man's servant.</td>\n",
       "      <td>1.00</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>1.805</td>\n",
       "      <td>None</td>\n",
       "      <td>HANS STIRS NOT</td>\n",
       "      <td>Honsters Nied.</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>819</th>\n",
       "      <td>5.775</td>\n",
       "      <td>None</td>\n",
       "      <td>SCUSE ME SAID TROT I NEGLECTED TO TELL YOU THA...</td>\n",
       "      <td>Thanks for watching.</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano Staedt-Loss</td>\n",
       "      <td>1.50</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "757  10.030  None  THEREFORE I FEEL MYSELF QUITE ABLE AS PRESIDEN...  \\\n",
       "628   2.550  None                           DURING HIS WATCH I SLEPT   \n",
       "756   4.735  None  YOU HAVE COME TO US THREATENING US WITH ABSOLU...   \n",
       "377   3.910  None  HE WENT HERE THERE AND EVERYWHERE IN PERFECT C...   \n",
       "376   8.340  None  NEVER DID HE OBJECT TO BUCKLING UP HIS SUITCAS...   \n",
       "..      ...   ...                                                ...   \n",
       "918   3.000  None                            THAT IS TRUE BADAUDERIE   \n",
       "371   2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "592   1.805  None                                     HANS STIRS NOT   \n",
       "819   5.775  None  SCUSE ME SAID TROT I NEGLECTED TO TELL YOU THA...   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text   wer       mer   \n",
       "757  Therefore, I feel myself quite able, as Presid...  0.00  0.000000  \\\n",
       "628                         During his watch, I slept.  0.00  0.000000   \n",
       "756  You have come to us threatening us with absolu...  0.00  0.000000   \n",
       "377  He went here, there, and everywhere in perfect...  0.00  0.000000   \n",
       "376  Never did he object to buckling up his suitcas...  0.00  0.000000   \n",
       "..                                                 ...   ...       ...   \n",
       "918                        That is true bad-delt gree.  0.75  0.500000   \n",
       "371                       Cossay was my man's servant.  1.00  0.666667   \n",
       "592                                     Honsters Nied.  1.00  1.000000   \n",
       "819                               Thanks for watching.  1.00  1.000000   \n",
       "538                                Stefano Staedt-Loss  1.50  1.000000   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "757  0.000000  1.000000          False  \n",
       "628  0.000000  1.000000          False  \n",
       "756  0.000000  1.000000          False  \n",
       "377  0.000000  1.000000          False  \n",
       "376  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "918  0.625000  0.375000          False  \n",
       "371  0.833333  0.166667          False  \n",
       "592  1.000000  0.000000          False  \n",
       "819  1.000000  0.000000          False  \n",
       "538  1.000000  0.000000          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vqmodel-4e-hyptuned-32gpu.model\", N=1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7bda5f31",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 08:52&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 7.37%\n",
      "WER (w/o hallucinations): 7.37%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>715</th>\n",
       "      <td>11.340</td>\n",
       "      <td>None</td>\n",
       "      <td>THE MOTHER IN MANAGING THE CASE IN THIS WAY RE...</td>\n",
       "      <td>The mother, in managing the case in this way, ...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>347</th>\n",
       "      <td>3.665</td>\n",
       "      <td>None</td>\n",
       "      <td>OJO HAD NEVER EATEN SUCH A FINE MEAL IN ALL HI...</td>\n",
       "      <td>Ojo had never eaten such a fine meal in all hi...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>860</th>\n",
       "      <td>10.555</td>\n",
       "      <td>None</td>\n",
       "      <td>IT IS NOTABLE THAT THE INDIAN TRIBES HAVE GENE...</td>\n",
       "      <td>It is notable that the Indian tribes have gene...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>608</th>\n",
       "      <td>3.070</td>\n",
       "      <td>None</td>\n",
       "      <td>THE HORIZON SEEMS EXTREMELY DISTANT</td>\n",
       "      <td>The horizon seems extremely distant.</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>344</th>\n",
       "      <td>4.275</td>\n",
       "      <td>None</td>\n",
       "      <td>I AM MY DEAR AND ALL STRANGERS ARE WELCOME TO ...</td>\n",
       "      <td>I am, my dear, and all strangers are welcome t...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cosay was my man's servant.</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260</th>\n",
       "      <td>3.155</td>\n",
       "      <td>None</td>\n",
       "      <td>WHO TAUGHT YOU TO SCRUB A FLOOR I SHOULD LIKE ...</td>\n",
       "      <td>.</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>1.805</td>\n",
       "      <td>None</td>\n",
       "      <td>HANS STIRS NOT</td>\n",
       "      <td>Honster's Night.</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>792</th>\n",
       "      <td>1.810</td>\n",
       "      <td>None</td>\n",
       "      <td>VENICE</td>\n",
       "      <td>Venus.</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefanos de los.</td>\n",
       "      <td>1.5</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       secs   idx                                            gt_text   \n",
       "715  11.340  None  THE MOTHER IN MANAGING THE CASE IN THIS WAY RE...  \\\n",
       "347   3.665  None  OJO HAD NEVER EATEN SUCH A FINE MEAL IN ALL HI...   \n",
       "860  10.555  None  IT IS NOTABLE THAT THE INDIAN TRIBES HAVE GENE...   \n",
       "608   3.070  None                THE HORIZON SEEMS EXTREMELY DISTANT   \n",
       "344   4.275  None  I AM MY DEAR AND ALL STRANGERS ARE WELCOME TO ...   \n",
       "..      ...   ...                                                ...   \n",
       "371   2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "260   3.155  None  WHO TAUGHT YOU TO SCRUB A FLOOR I SHOULD LIKE ...   \n",
       "592   1.805  None                                     HANS STIRS NOT   \n",
       "792   1.810  None                                             VENICE   \n",
       "538   2.215  None                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text  wer       mer   \n",
       "715  The mother, in managing the case in this way, ...  0.0  0.000000  \\\n",
       "347  Ojo had never eaten such a fine meal in all hi...  0.0  0.000000   \n",
       "860  It is notable that the Indian tribes have gene...  0.0  0.000000   \n",
       "608               The horizon seems extremely distant.  0.0  0.000000   \n",
       "344  I am, my dear, and all strangers are welcome t...  0.0  0.000000   \n",
       "..                                                 ...  ...       ...   \n",
       "371                        Cosay was my man's servant.  1.0  0.666667   \n",
       "260                                                  .  1.0  1.000000   \n",
       "592                                   Honster's Night.  1.0  1.000000   \n",
       "792                                             Venus.  1.0  1.000000   \n",
       "538                                   Stefanos de los.  1.5  1.000000   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "715  0.000000  1.000000          False  \n",
       "347  0.000000  1.000000          False  \n",
       "860  0.000000  1.000000          False  \n",
       "608  0.000000  1.000000          False  \n",
       "344  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "371  0.833333  0.166667          False  \n",
       "260  1.000000  0.000000          False  \n",
       "592  1.000000  0.000000          False  \n",
       "792  1.000000  0.000000          False  \n",
       "538  1.000000  0.000000          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vqmodel-512c-4e-hyptuned-32gpu.model\", N=1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3de08583",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    /* Turns off some styling */\n",
       "    progress {\n",
       "        /* gets rid of default border in Firefox and Opera. */\n",
       "        border: none;\n",
       "        /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "        background-size: auto;\n",
       "    }\n",
       "    progress:not([value]), progress:not([value])::-webkit-progress-bar {\n",
       "        background: repeating-linear-gradient(45deg, #7e7e7e, #7e7e7e 10px, #5c5c5c 10px, #5c5c5c 20px);\n",
       "    }\n",
       "    .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "        background: #F44336;\n",
       "    }\n",
       "</style>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      <progress value='1000' class='' max='1000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      100.00% [1000/1000 01:29&lt;00:00]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WER: 7.13%\n",
      "WER (w/o hallucinations): 7.13%\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>secs</th>\n",
       "      <th>idx</th>\n",
       "      <th>gt_text</th>\n",
       "      <th>text</th>\n",
       "      <th>wer</th>\n",
       "      <th>mer</th>\n",
       "      <th>wil</th>\n",
       "      <th>wip</th>\n",
       "      <th>hallucination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.230</td>\n",
       "      <td>None</td>\n",
       "      <td>AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...</td>\n",
       "      <td>And often has my mother said, while on her lap...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>680</th>\n",
       "      <td>6.450</td>\n",
       "      <td>None</td>\n",
       "      <td>HE DARTED LIKE AN ARROW THROUGH ALL THE HALLS ...</td>\n",
       "      <td>He darted like an arrow through all the halls,...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>682</th>\n",
       "      <td>5.145</td>\n",
       "      <td>None</td>\n",
       "      <td>AND ALL HIS BROTHERS AND SISTERS STOOD ROUND A...</td>\n",
       "      <td>and all his brothers and sisters stood round a...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>684</th>\n",
       "      <td>2.165</td>\n",
       "      <td>None</td>\n",
       "      <td>ANDERS FACE GREW RED</td>\n",
       "      <td>Anders face grew red.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>685</th>\n",
       "      <td>2.775</td>\n",
       "      <td>None</td>\n",
       "      <td>BUT HIS MOTHER HUGGED HIM CLOSE</td>\n",
       "      <td>But his mother hugged him close.</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>2.020</td>\n",
       "      <td>None</td>\n",
       "      <td>SQUEAK SQUEAK</td>\n",
       "      <td>Speak, speak.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>371</th>\n",
       "      <td>2.440</td>\n",
       "      <td>None</td>\n",
       "      <td>CONSEIL WAS MY MANSERVANT</td>\n",
       "      <td>Cossay was my man's servant.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.166667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>592</th>\n",
       "      <td>1.805</td>\n",
       "      <td>None</td>\n",
       "      <td>HANS STIRS NOT</td>\n",
       "      <td>Honsters, Nied.</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>336</th>\n",
       "      <td>4.835</td>\n",
       "      <td>None</td>\n",
       "      <td>FOR A LONG TIME HE HAD WISHED TO EXPLORE THE B...</td>\n",
       "      <td>For a long time, you can see that the video is...</td>\n",
       "      <td>1.333333</td>\n",
       "      <td>0.800000</td>\n",
       "      <td>0.933333</td>\n",
       "      <td>0.066667</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>538</th>\n",
       "      <td>2.215</td>\n",
       "      <td>None</td>\n",
       "      <td>STEPHANOS DEDALOS</td>\n",
       "      <td>Stefano Staedt-Loss</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      secs   idx                                            gt_text   \n",
       "0    8.230  None  AND OFTEN HAS MY MOTHER SAID WHILE ON HER LAP ...  \\\n",
       "680  6.450  None  HE DARTED LIKE AN ARROW THROUGH ALL THE HALLS ...   \n",
       "682  5.145  None  AND ALL HIS BROTHERS AND SISTERS STOOD ROUND A...   \n",
       "684  2.165  None                               ANDERS FACE GREW RED   \n",
       "685  2.775  None                    BUT HIS MOTHER HUGGED HIM CLOSE   \n",
       "..     ...   ...                                                ...   \n",
       "106  2.020  None                                      SQUEAK SQUEAK   \n",
       "371  2.440  None                          CONSEIL WAS MY MANSERVANT   \n",
       "592  1.805  None                                     HANS STIRS NOT   \n",
       "336  4.835  None  FOR A LONG TIME HE HAD WISHED TO EXPLORE THE B...   \n",
       "538  2.215  None                                  STEPHANOS DEDALOS   \n",
       "\n",
       "                                                  text       wer       mer   \n",
       "0    And often has my mother said, while on her lap...  0.000000  0.000000  \\\n",
       "680  He darted like an arrow through all the halls,...  0.000000  0.000000   \n",
       "682  and all his brothers and sisters stood round a...  0.000000  0.000000   \n",
       "684                              Anders face grew red.  0.000000  0.000000   \n",
       "685                   But his mother hugged him close.  0.000000  0.000000   \n",
       "..                                                 ...       ...       ...   \n",
       "106                                      Speak, speak.  1.000000  1.000000   \n",
       "371                       Cossay was my man's servant.  1.000000  0.666667   \n",
       "592                                    Honsters, Nied.  1.000000  1.000000   \n",
       "336  For a long time, you can see that the video is...  1.333333  0.800000   \n",
       "538                                Stefano Staedt-Loss  1.500000  1.000000   \n",
       "\n",
       "          wil       wip  hallucination  \n",
       "0    0.000000  1.000000          False  \n",
       "680  0.000000  1.000000          False  \n",
       "682  0.000000  1.000000          False  \n",
       "684  0.000000  1.000000          False  \n",
       "685  0.000000  1.000000          False  \n",
       "..        ...       ...            ...  \n",
       "106  1.000000  0.000000          False  \n",
       "371  0.833333  0.166667          False  \n",
       "592  1.000000  0.000000          False  \n",
       "336  0.933333  0.066667          False  \n",
       "538  1.000000  0.000000          False  \n",
       "\n",
       "[1000 rows x 9 columns]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_model(\"vqmodel-512c-dim64-4e-hyptuned-32gpu.model\", N=1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "68b66e6f",
   "metadata": {},
   "outputs": [],
   "source": [
    "#| hide\n",
    "import nbdev; nbdev.nbdev_export()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "python3",
   "language": "python",
   "name": "python3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
